/unit/src/ |
H A D | nxt_conf.c | diff 2139:99d792169ffb Thu Jun 16 01:00:00 UTC 2022 Andrew Clayton <andrew@digital-domain.net> Constified numerous function parameters.
As was pointed out by the cppcheck[0] static code analysis utility we can mark numerous function parameters as 'const'. This acts as a hint to the compiler about our intentions and the compiler will tell us when we deviate from them.
[0]: https://cppcheck.sourceforge.io/ diff 1439:32578e837322 Mon Mar 30 16:37:00 UTC 2020 Valentin Bartenev <vbart@nginx.com> Configuration: support for rational numbers. diff 1425:e3cf8d512e53 Wed Mar 25 16:14:00 UTC 2020 Valentin Bartenev <vbart@nginx.com> Configuration: fixed comments parsing.
Unclosed multi-line comments and "/" at the end of JSON shouldn't be allowed. diff 1167:a49ee872e83d Mon Sep 16 17:17:00 UTC 2019 Valentin Bartenev <vbart@nginx.com> Configuration: added ability to access object members with slashes.
Now URI encoding can be used to escape "/" in the request path:
GET /config/listeners/unix:%2Fpath%2Fto%2Fsocket/ diff 962:441ac71b793a Tue Feb 26 16:48:00 UTC 2019 Igor Sysoev <igor@sysoev.ru> Introduced nxt_conf_array_qsort(). diff 961:94b4c5bb66e3 Tue Feb 26 16:48:00 UTC 2019 Igor Sysoev <igor@sysoev.ru> Introduced nxt_conf_array_elements_count(). diff 214:3dda93d5b3cf Wed Aug 16 12:45:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Introduced nxt_conf_get_array_element(). diff 213:df7c06c7f26d Wed Aug 16 12:45:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Object mapping interface extended with more string types. diff 208:7d1017bd0f6c Fri Aug 11 16:54:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Controller: more HTTP headers and detailed JSON parsing errors. diff 207:1145c84e08ac Fri Aug 11 15:13:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Fixed parsing of JSON encoded UTF-16 surrogate pairs.
|
H A D | nxt_conf.h | diff 2139:99d792169ffb Thu Jun 16 01:00:00 UTC 2022 Andrew Clayton <andrew@digital-domain.net> Constified numerous function parameters.
As was pointed out by the cppcheck[0] static code analysis utility we can mark numerous function parameters as 'const'. This acts as a hint to the compiler about our intentions and the compiler will tell us when we deviate from them.
[0]: https://cppcheck.sourceforge.io/ diff 1439:32578e837322 Mon Mar 30 16:37:00 UTC 2020 Valentin Bartenev <vbart@nginx.com> Configuration: support for rational numbers. diff 962:441ac71b793a Tue Feb 26 16:48:00 UTC 2019 Igor Sysoev <igor@sysoev.ru> Introduced nxt_conf_array_qsort(). diff 961:94b4c5bb66e3 Tue Feb 26 16:48:00 UTC 2019 Igor Sysoev <igor@sysoev.ru> Introduced nxt_conf_array_elements_count(). diff 357:b80698152fcd Tue Oct 10 16:46:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Basic validation errors. diff 214:3dda93d5b3cf Wed Aug 16 12:45:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Introduced nxt_conf_get_array_element(). diff 213:df7c06c7f26d Wed Aug 16 12:45:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Object mapping interface extended with more string types. diff 208:7d1017bd0f6c Fri Aug 11 16:54:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Controller: more HTTP headers and detailed JSON parsing errors. diff 111:cfdcff16aa43 Thu Jun 29 16:26:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Added nxt_msec_t element to nxt_conf_map_object(). diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
|
H A D | nxt_conf_validation.c | diff 2437:8973f763920b Sat Mar 18 16:32:00 UTC 2023 Andrew Clayton <a.clayton@nginx.com> Allow to remove the version string in HTTP responses.
Normally Unit responds to HTTP requests by including a header like
Server: Unit/1.30.0
however it can sometimes be beneficial to withhold the version information and in this case just respond with
Server: Unit
This patch adds a new "settings.http" boolean option called server_version, which defaults to true, in which case the full version information is sent. However this can be set to false, e.g
"settings": { "http": { "server_version": false } },
in which case Unit responds without the version information as the latter example above shows.
Link: <https://www.ietf.org/rfc/rfc9110.html#section-10.2.4> Closes: <https://github.com/nginx/unit/issues/158> Reviewed-by: Alejandro Colomar <alx@nginx.com> Signed-off-by: Andrew Clayton <a.clayton@nginx.com> diff 2345:5c9cb7e205d3 Mon Jan 30 03:16:00 UTC 2023 Zhidao HONG <z.hong@f5.com> NJS: adding the missing vm destruction.
This commit fixed the njs memory leak happened in the config validation, updating and http requests. diff 2318:6f198d76ee62 Mon Jan 30 03:16:00 UTC 2023 Zhidao HONG <z.hong@f5.com> NJS: adding the missing vm destruction.
This commit fixed the njs memory leak happened in the config validation, updating and http requests. diff 2262:0bca3af03c75 Mon Oct 24 16:14:00 UTC 2022 Andrew Clayton <a.clayton@nginx.com> Isolation: wired up cgroup support to the config system.
This hooks the cgroup support up to the config system so it can actually be used.
To make use of this in unit a new "cgroup" section has been added to the isolation configuration.
e.g
"applications": { "python": { "type": "python", "processes": 5, "path": "/opt/unit/unit-cgroup-test/", "module": "app",
"isolation": { "cgroup": { "path": "app/python" } } } }
Now there are two ways to specify the path, relative, like the above (without a leading '/') and absolute (with a leading '/').
In the above case the "python" application is placed into its own cgroup under CGROUP_ROOT/<main unit process cgroup>/app/python. Whereas if you specified say
"path": "/unit/app/python"
Then the python application would be placed under CGROUP_ROOT/unit/app/python
The first option allows you to easily take advantage of any resource limits that have already been configured for unit.
With the second method (absolute pathname) if you know of an already existing cgroup where you'd like to place it, you can, e.g
"path": "/system.slice/unit/python"
Where system.slice has already been created by systemd and may already have some overall system limits applied which would also apply to unit. Limits apply down the hierarchy and lower groups can't exceed the previous group limits.
So what does this actually look like? Lets take the unit-calculator application[0] and have each of its applications placed into their own cgroup. If we give each application a new section like
"isolation": { "cgroup": { "path": "/unit/unit-calculator/add" } }
changing the path for each one, we can visualise the result with the systemd-cgls command, e.g
│ └─session-5.scope (#4561) │ ├─ 6667 sshd: andrew [priv] │ ├─ 6684 sshd: andrew@pts/0 │ ├─ 6685 -bash │ ├─ 12632 unit: main v1.28.0 [/opt/unit/sbin/unitd --control 127.0.0.1:808> │ ├─ 12634 unit: controller │ ├─ 12635 unit: router │ ├─ 13550 systemd-cgls │ └─ 13551 less ├─unit (#4759) │ └─unit-calculator (#5037) │ ├─subtract (#5069) │ │ ├─ 12650 unit: "subtract" prototype │ │ └─ 12651 unit: "subtract" application │ ├─multiply (#5085) │ │ ├─ 12653 unit: "multiply" prototype │ │ └─ 12654 unit: "multiply" application │ ├─divide (#5101) │ │ ├─ 12671 unit: "divide" prototype │ │ └─ 12672 node divide.js │ ├─sqroot (#5117) │ │ ├─ 12679 unit: "sqroot" prototype │ │ └─ 12680 /home/andrew/src/unit-calculator/sqroot/sqroot │ └─add (#5053) │ ├─ 12648 unit: "add" prototype │ └─ 12649 unit: "add" application
We used an absolute path so the cgroups will be created relative to the main cgroupfs mount, e.g /sys/fs/cgroup
We can see that the main unit processes are in the same cgroup as the shell from where they were started, by default child process are placed into the same cgroup as the parent.
Then we can see that each application has been placed into its own cgroup under /sys/fs/cgroup
Taking another example of a simple 5 process python application, with
"isolation": { "cgroup": { "path": "app/python" } }
Here we have specified a relative path and thus the python application will be placed below the existing cgroup that contains the main unit process. E.g
│ │ │ ├─app-glib-cinnamon\x2dcustom\x2dlauncher\x2d3-43951.scope (#90951) │ │ │ │ ├─ 988 unit: main v1.28.0 [/opt/unit/sbin/unitd --no-daemon] │ │ │ │ ├─ 990 unit: controller │ │ │ │ ├─ 991 unit: router │ │ │ │ ├─ 43951 xterm -bg rgb:20/20/20 -fg white -fa DejaVu Sans Mono │ │ │ │ ├─ 43956 bash │ │ │ │ ├─ 58828 sudo -i │ │ │ │ ├─ 58831 -bash │ │ │ │ └─app (#107351) │ │ │ │ └─python (#107367) │ │ │ │ ├─ 992 unit: "python" prototype │ │ │ │ ├─ 993 unit: "python" application │ │ │ │ ├─ 994 unit: "python" application │ │ │ │ ├─ 995 unit: "python" application │ │ │ │ ├─ 996 unit: "python" application │ │ │ │ └─ 997 unit: "python" application
[0]: <https://github.com/lcrilly/unit-calculator>
Reviewed-by: Alejandro Colomar <alx@nginx.com> Signed-off-by: Andrew Clayton <a.clayton@nginx.com> diff 2247:baa6b9879267 Sun Nov 20 15:16:00 UTC 2022 Zhidao HONG <z.hong@f5.com> Basic njs support. diff 2078:0996dd223cdd Sat Dec 18 23:58:00 UTC 2021 Alejandro Colomar <alx.manpages@gmail.com> Fixed indentation.
Some lines (incorrectly) had an indentation of 3 or 5, or 7 or 9, or 11 or 13, or 15 or 17 spaces instead of 4, 8, 12, or 16. Fix them.
Found with:
$ find src -type f | xargs grep -n '^ [^ ]'; $ find src -type f | xargs grep -n '^ [^ *]'; $ find src -type f | xargs grep -n '^ [^ ]'; $ find src -type f | xargs grep -n '^ [^ *]'; $ find src -type f | xargs grep -n '^ [^ +]'; $ find src -type f | xargs grep -n '^ [^ *+]'; $ find src -type f | xargs grep -n '^ [^ +]'; $ find src -type f | xargs grep -n '^ [^ *+]'; diff 1955:e834792ed4e3 Tue Sep 14 16:35:00 UTC 2021 Max Romanov <max.romanov@nginx.com> Fixing build with glibc 2.34.
Explicitly using the sysconf() call to obtain the minimum thread stack size instead of the PTHREAD_STACK_MIN macro.
This closes #576 PR on GitHub. diff 1936:953434450ea9 Thu Aug 12 08:23:00 UTC 2021 Oisin Canty <o.canty@f5.com> Router: client IP address replacement.
This commit introduces the replacement of the client address based on the value of a specified HTTP header. This is intended for use when Unit is placed behind a reverse proxy like nginx or a CDN.
You must specify the source addresses of the trusted proxies. This can be accomplished with any valid IP pattern supported by Unit's match block:
["10.0.0.1", "10.4.0.0/16", "!192.168.1.1"]
The feature is configured per listener.
The client address replacement functionality only operates when there is a source IP match and the specified header is present. Typically this would be an 'X-Forwarded-For' header.
{ "listeners": { "127.0.0.1:8080": { "client_ip": { "header": "X-Forwarded-For", "source": [ "10.0.0.0/8" ] }, "pass": "applications/my_app" }, } }
If a request occurs and Unit receives a header like below:
"X-Forwarded-For: 84.123.23.23"
By default, Unit trusts the last rightmost IP in the header, so REMOTE_ADDR will be set to 84.123.23.23 if the connection originated from 10.0.0.0/8.
If Unit runs behind consecutive reverse proxies and receives a header similar to the following:
"X-Forwarded-For: 84.123.23.23, 10.0.0.254"
You will need to enable "recursive" checking, which walks the header from last address to first and chooses the first non-trusted address it finds.
{ "listeners": { "127.0.0.1:8080": { "client_ip": { "header": "X-Forwarded-For", "source": [ "10.0.0.0/8" ] "recursive": true, }, "pass": "applications/my_app" }, } }
If a connection from 10.0.0.0/8 occurs, the chain is walked. Here, 10.0.0.254 is also a trusted address so the client address will be replaced with 84.123.23.23.
If all IP addresses in the header are trusted, the client address is set to the first address in the header:
If 10.0.0.0/8 is trusted and "X-Forwarded-For: 10.0.0.3, 10.0.0.2, 10.0.0.1", the client address will be replaced with 10.0.0.3. diff 1883:b075f32408a1 Wed May 26 16:48:00 UTC 2021 Oisin Canty <o.canty@f5.com> Static: handled unknown MIME types when MIME-filtering active. diff 1708:4463c1fc26fd Mon Nov 16 17:56:00 UTC 2020 Tiago Natel de Moura <t.nateldemoura@f5.com> Isolation: added option to disable "procfs" mount.
Now users can disable the default procfs mount point in the rootfs.
{ "isolation": { "automount": { "procfs": false } } }
|
H A D | nxt_conn.c | diff 654:b6ca49c1da1b Fri Apr 20 16:46:00 UTC 2018 Igor Sysoev <igor@sysoev.ru> Fixed alerts about freeing non-freeable memory on connection close.
The nxt_conn_t object is allocated by nxt_zget() and should not be freed. diff 88:c6879c7b5bdf Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> Added basic HTTP request processing in router.
- request to connection mapping in engine; - requests queue in connection; - engine port creation; - connected ports hash for each process; - engine port data messages processing (app responses); diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
|
H A D | nxt_conn.h | diff 337:854a1a440616 Wed Sep 27 16:22:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Event engine memory cache for nxt_sockaddr_t.
Introducing event engine memory cache and using the cache for nxt_sockaddr_t structures. diff 93:8c66fdbc526b Mon Jun 26 16:58:00 UTC 2017 Max Romanov <max.romanov@nginx.com> Build on Solaris 11 fixed. diff 88:c6879c7b5bdf Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> Added basic HTTP request processing in router.
- request to connection mapping in engine; - requests queue in connection; - engine port creation; - connected ports hash for each process; - engine port data messages processing (app responses); diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
|
H A D | nxt_conn_accept.c | diff 493:745222d540a2 Wed Jan 24 12:16:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Using size_t for the field width type of the "%*s" specifier. diff 338:2c6135a99c27 Wed Sep 27 16:43:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Fixed building by modern GCC. diff 337:854a1a440616 Wed Sep 27 16:22:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Event engine memory cache for nxt_sockaddr_t.
Introducing event engine memory cache and using the cache for nxt_sockaddr_t structures. diff 312:c156aea91063 Thu Sep 14 15:16:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Fixed textual socket name lengths and Unix domain sockaddr length. diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
|
H A D | nxt_conn_connect.c | diff 494:7c83ddcc1c42 Wed Jan 24 12:16:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Fixed formatting in nxt_sprintf() and logging. diff 493:745222d540a2 Wed Jan 24 12:16:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Using size_t for the field width type of the "%*s" specifier.
|
H A D | nxt_conn_proxy.c | diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
|
H A D | nxt_conn_read.c | diff 836:ecd3c5bbf7d8 Tue Nov 13 16:04:00 UTC 2018 Igor Sysoev <igor@sysoev.ru> Checking error states in I/O handlers.
|
H A D | nxt_conn_write.c | diff 1577:604db78b62f9 Sun Aug 16 21:28:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Supporting platforms without sendfile() implementation.
This is a quick and dirty sendfile() replacement.
This closes #452 PR on GitHub. diff 1576:304b53232bc9 Sun Aug 16 21:28:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Style: changing preprocessor directives.
Using #if directives instead of #ifdef the same way as in other places. diff 494:7c83ddcc1c42 Wed Jan 24 12:16:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Fixed formatting in nxt_sprintf() and logging.
|
H A D | nxt_controller.c | diff 1926:6e85d6c0b8bb Thu Jul 29 16:50:00 UTC 2021 Max Romanov <max.romanov@nginx.com> Application restart introduced.
When processing a restart request, the router sends a QUIT message to all existing processes of the application. Then, a new shared application port is created to ensure that new requests won't be handled by the old processes of the application. diff 1488:6976d36be926 Mon Mar 09 16:28:00 UTC 2020 Tiago Natel de Moura <t.nateldemoura@f5.com> Refactor of process management.
The process abstraction has changed to:
setup(task, process) start(task, process_data) prefork(task, process, mp)
The prefork() occurs in the main process right before fork.
The file src/nxt_main_process.c is completely free of process specific logic.
The creation of a process now supports a PROCESS_CREATED state. The The setup() function of each process can set its state to either created or ready. If created, a MSG_PROCESS_CREATED is sent to main process, where external setup can be done (required for rootfs under container).
The core processes (discovery, controller and router) doesn't need external setup, then they all proceeds to their start() function straight away.
In the case of applications, the load of the module happens at the process setup() time and The module's init() function has changed to be the start() of the process.
The module API has changed to:
setup(task, process, conf) start(task, data)
As a direct benefit of the PROCESS_CREATED message, the clone(2) of processes using pid namespaces now doesn't need to create a pipe to make the child block until parent setup uid/gid mappings nor it needs to receive the child pid. diff 1459:358b957ca294 Thu Apr 16 14:09:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Using malloc/free for the http fields hash.
This is required due to lack of a graceful shutdown: there is a small gap between the runtime's memory pool release and router process's exit. Thus, a worker thread may start processing a request between these two operations, which may result in an http fields hash access and subsequent crash.
To simplify issue reproduction, it makes sense to add a 2 sec sleep before exit() in nxt_runtime_exit(). diff 1167:a49ee872e83d Mon Sep 16 17:17:00 UTC 2019 Valentin Bartenev <vbart@nginx.com> Configuration: added ability to access object members with slashes.
Now URI encoding can be used to escape "/" in the request path:
GET /config/listeners/unix:%2Fpath%2Fto%2Fsocket/ diff 357:b80698152fcd Tue Oct 10 16:46:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Basic validation errors. diff 337:854a1a440616 Wed Sep 27 16:22:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Event engine memory cache for nxt_sockaddr_t.
Introducing event engine memory cache and using the cache for nxt_sockaddr_t structures. diff 312:c156aea91063 Thu Sep 14 15:16:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Fixed textual socket name lengths and Unix domain sockaddr length. diff 208:7d1017bd0f6c Fri Aug 11 16:54:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> Controller: more HTTP headers and detailed JSON parsing errors. diff 103:88fc973fd7a2 Wed Jun 28 12:16:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Setting listen socket fields lost in changeset 10688b89aa16. diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
|
H A D | nxt_credential.c | diff 1306:3604d05e48be Fri Dec 06 16:52:00 UTC 2019 Tiago Natel <t.nateldemoura@f5.com> Isolation: allowed the use of credentials with unpriv userns.
The setuid/setgid syscalls requires root capabilities but if the kernel supports unprivileged user namespace then the child process has the full set of capabilities in the new namespace, then we can allow setting "user" and "group" in such cases (this is a common security use case).
Tests were added to ensure user gets meaningful error messages for uid/gid mapping misconfigurations.
|
H A D | nxt_credential.h | diff 1306:3604d05e48be Fri Dec 06 16:52:00 UTC 2019 Tiago Natel <t.nateldemoura@f5.com> Isolation: allowed the use of credentials with unpriv userns.
The setuid/setgid syscalls requires root capabilities but if the kernel supports unprivileged user namespace then the child process has the full set of capabilities in the new namespace, then we can allow setting "user" and "group" in such cases (this is a common security use case).
Tests were added to ensure user gets meaningful error messages for uid/gid mapping misconfigurations.
|
H A D | nxt_cyassl.c | diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
|
H A D | nxt_epoll_engine.c | diff 312:c156aea91063 Thu Sep 14 15:16:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Fixed textual socket name lengths and Unix domain sockaddr length.
|
H A D | nxt_errno.c | diff 10:a8e68ed06863 Wed Feb 01 16:20:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> nxt_str_t changes.
|
H A D | nxt_errno.h | diff 1439:32578e837322 Mon Mar 30 16:37:00 UTC 2020 Valentin Bartenev <vbart@nginx.com> Configuration: support for rational numbers.
|
H A D | nxt_event_conn_job_sendfile.c | diff 1:fdc027c56872 Mon Jan 23 16:56:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Introducing tasks.
|
H A D | nxt_event_engine.c | diff 494:7c83ddcc1c42 Wed Jan 24 12:16:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Fixed formatting in nxt_sprintf() and logging. diff 337:854a1a440616 Wed Sep 27 16:22:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Event engine memory cache for nxt_sockaddr_t.
Introducing event engine memory cache and using the cache for nxt_sockaddr_t structures. diff 88:c6879c7b5bdf Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> Added basic HTTP request processing in router.
- request to connection mapping in engine; - requests queue in connection; - engine port creation; - connected ports hash for each process; - engine port data messages processing (app responses); diff 1:fdc027c56872 Mon Jan 23 16:56:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Introducing tasks.
|
H A D | nxt_event_engine.h | diff 337:854a1a440616 Wed Sep 27 16:22:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Event engine memory cache for nxt_sockaddr_t.
Introducing event engine memory cache and using the cache for nxt_sockaddr_t structures. diff 88:c6879c7b5bdf Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> Added basic HTTP request processing in router.
- request to connection mapping in engine; - requests queue in connection; - engine port creation; - connected ports hash for each process; - engine port data messages processing (app responses); diff 1:fdc027c56872 Mon Jan 23 16:56:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Introducing tasks.
|
H A D | nxt_external.c | diff 1543:42f27153db91 Tue Aug 11 16:19:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Libunit refactoring: port management.
- Changed the port management callbacks to notifications, which e. g. avoids the need to call the libunit function - Added context and library instance reference counts for a safer resource release - Added the router main port initialization diff 1488:6976d36be926 Mon Mar 09 16:28:00 UTC 2020 Tiago Natel de Moura <t.nateldemoura@f5.com> Refactor of process management.
The process abstraction has changed to:
setup(task, process) start(task, process_data) prefork(task, process, mp)
The prefork() occurs in the main process right before fork.
The file src/nxt_main_process.c is completely free of process specific logic.
The creation of a process now supports a PROCESS_CREATED state. The The setup() function of each process can set its state to either created or ready. If created, a MSG_PROCESS_CREATED is sent to main process, where external setup can be done (required for rootfs under container).
The core processes (discovery, controller and router) doesn't need external setup, then they all proceeds to their start() function straight away.
In the case of applications, the load of the module happens at the process setup() time and The module's init() function has changed to be the start() of the process.
The module API has changed to:
setup(task, process, conf) start(task, data)
As a direct benefit of the PROCESS_CREATED message, the clone(2) of processes using pid namespaces now doesn't need to create a pipe to make the child block until parent setup uid/gid mappings nor it needs to receive the child pid.
|
H A D | nxt_fd_event.c | diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
|
H A D | nxt_fiber.c | diff 1:fdc027c56872 Mon Jan 23 16:56:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Introducing tasks.
|
H A D | nxt_fiber.h | diff 1:fdc027c56872 Mon Jan 23 16:56:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Introducing tasks.
|
H A D | nxt_file.c | diff 494:7c83ddcc1c42 Wed Jan 24 12:16:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Fixed formatting in nxt_sprintf() and logging.
|