Home
last modified time | relevance | path

Searched hist:16 (Results 1 – 25 of 309) sorted by path

12345678910>>...13

/unit/
H A DCHANGESdiff 1722:8d987b7880f9 Thu Nov 19 16:59:00 UTC 2020 Valentin Bartenev <vbart@nginx.com> Added version 1.21.0 CHANGES.
diff 1643:0e985b300673 Thu Oct 08 16:04:00 UTC 2020 Valentin Bartenev <vbart@nginx.com> Updated 1.20.0 CHANGES to include pytest migration.
diff 1570:41371bb77803 Thu Aug 13 16:22:00 UTC 2020 Valentin Bartenev <vbart@nginx.com> Added version 1.19.0 CHANGES.
diff 1460:e44039667c3e Thu Apr 16 14:49:00 UTC 2020 Valentin Bartenev <vbart@nginx.com> Added version 1.17.0 CHANGES.
diff 1284:7cdcbdd3ec34 Thu Nov 14 16:23:00 UTC 2019 Valentin Bartenev <vbart@nginx.com> Added version 1.13.0 CHANGES.
diff 1069:3dae65a81e8f Thu May 30 14:16:00 UTC 2019 Valentin Bartenev <vbart@nginx.com> Added version 1.9 CHANGES.
diff 886:9d30c80a7935 Thu Dec 20 16:17:00 UTC 2018 Valentin Bartenev <vbart@nginx.com> Added version 1.7 CHANGES.
diff 885:aae620f3dc68 Thu Dec 20 16:17:00 UTC 2018 Valentin Bartenev <vbart@nginx.com> Fixed style in CHANGES.
diff 639:2122fd672fd7 Thu Apr 12 16:47:00 UTC 2018 Valentin Bartenev <vbart@nginx.com> Added version 1.0 CHANGES.
diff 539:4ae0b7b989e3 Fri Feb 09 16:07:00 UTC 2018 Valentin Bartenev <vbart@nginx.com> Added version 0.6 CHANGES.
H A DCONTRIBUTING.md2095:8c0978d786bd Fri May 13 16:13:00 UTC 2022 Artem Konev <artem.konev@nginx.com> Adding GitHub-styled README and CONTRIBUTING files in Markdown.
H A DREADME.mddiff 2097:2227ab4f0812 Mon May 16 10:16:00 UTC 2022 Artem Konev <artem.konev@nginx.com> Deleted extra line in README.md.
diff 2097:2227ab4f0812 Mon May 16 10:16:00 UTC 2022 Artem Konev <artem.konev@nginx.com> Deleted extra line in README.md.
2095:8c0978d786bd Fri May 13 16:13:00 UTC 2022 Artem Konev <artem.konev@nginx.com> Adding GitHub-styled README and CONTRIBUTING files in Markdown.
H A Dconfigurediff 734:31d597a240ba Mon Jul 23 16:21:00 UTC 2018 Valentin Bartenev <vbart@nginx.com> Fixed configure process with non-default locale.

Overriding LANG might not work, since it has less precedence than LC_* settings.
LC_ALL has the highest precedence.

This should resolve issue #121 on GitHub.
/unit/auto/
H A Dclangdiff 701:f184ffeb0f02 Wed Jun 20 16:34:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Using own popcount where the compiler builtin is not available.
diff 93:8c66fdbc526b Mon Jun 26 16:58:00 UTC 2017 Max Romanov <max.romanov@nginx.com> Build on Solaris 11 fixed.
H A Disolationdiff 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 Dmakediff 1554:8f22edff911d Tue Aug 11 16:20:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Circular queues implementations and a test.

- naive circular queue, described in the article "A Scalable, Portable, and
Memory-Efficient Lock-Free FIFO Queue" by Ruslan Nikolaev:
https://drops.dagstuhl.de/opus/volltexte/2019/11335/pdf/LIPIcs-DISC-2019-28.pdf
- circular queue, proposed by Valentin Bartenev in the "Unit router application
IPC" design draft
diff 1255:944efece387a Thu Nov 07 16:53:00 UTC 2019 Valentin Bartenev <vbart@nginx.com> Respecting AR environment variable to configure ar binary.
diff 1217:ed8c4e263152 Wed Oct 02 16:11:00 UTC 2019 Max Romanov <max.romanov@nginx.com> Fixed "make tests" build without preceding "make".

Currently almost all Unit object files depends on generated nxt_version.h.
This patch adds missing dependence and fixes running make with multiple
jobs.

This closes #318 issue on GitHub.
diff 700:069b3b56cbca Wed Jun 20 16:33:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Using portable grep features.
diff 287:8d40819ca656 Wed Sep 06 16:23:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Added the dist target in Makefile.
diff 87:ae678814949f Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> External Go app request processing.
diff 86:3b77edf46701 Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> PHP app request processing.
diff 25:eade71762bd2 Tue Mar 14 16:05:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Adding CFLAGS to link commands to pass flags required by
AddressSanitizer.
diff 3:8a5b5a59a4d6 Tue Jan 24 16:25:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Now CFLAGS variable allows to overwrite configured options.
H A Doptionsdiff 87:ae678814949f Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> External Go app request processing.
diff 86:3b77edf46701 Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> PHP app request processing.
H A Dsendfilediff 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.
H A Dsourcesdiff 1505:d18f2b38596b Tue Jun 23 11:16:00 UTC 2020 Igor Sysoev <igor@sysoev.ru> Upstream chunked transfer encoding support.
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 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.
diff 80:1b394e999c7c Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> Store pointer to shared memory start in buf->parent.

nxt_port_mmap_t stored in arrays and it is unsafe to store
pointer to array element.

Shared memory structures and macros moved to separate header
file to be used by GO package.
diff 75:63205c12a84b Fri Jun 23 16:19:00 UTC 2017 Max Romanov <max.romanov@nginx.com> lvlhash for ports moved to separate files for future re-use.
diff 65:10688b89aa16 Tue Jun 20 16:49:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Using new memory pool implementation.
diff 16:c382e548cbb6 Wed Mar 01 12:29:00 UTC 2017 Valentin Bartenev <vbart@nginx.com> HTTP parser.
diff 1:fdc027c56872 Mon Jan 23 16:56:00 UTC 2017 Igor Sysoev <igor@sysoev.ru> Introducing tasks.
H A Dunixdiff 1297:f04b5f7d6137 Tue Nov 26 16:15:00 UTC 2019 Tiago Natel <t.nateldemoura@f5.com> Changed the group listing to run unprivileged when possible.

Now the nxt_user_groups_get() function uses getgrouplist(3) when available
(except MacOS, see below). For some platforms, getgrouplist() supports
a method of probing how much groups the user has but the behavior is not
consistent. The method used here consists of optimistically trying to get up
to min(256, NGROUPS_MAX) groups; only if ngroups returned exceeds the original
value, we do a second call. This method can block main's process if LDAP/NDIS+
is in use.

MacOS has getgrouplist(3) but it's buggy. It doesn't update ngroups if the
value passed is smaller than the number of groups the user has. Some
projects (like Go stdlib) call getgrouplist() in a loop, increasing ngroups
until it exceeds the number of groups user belongs to or fail when a limit
is reached. For performance reasons, this is to be avoided and MacOS is
handled in the fallback implementation.

The fallback implementation is the old Unit approach. It saves main's
user groups (getgroups(2)) and then calls initgroups(3) to load application's
groups in main, then does a second getgroups(2) to store the gids and restore
main's groups in the end. Because of initgroups(3)' call to setgroups(2),
this method requires root capabilities. In the case of OSX, which has
small NGROUPS_MAX by default (16), it's not possible to restore main's groups
if it's large; if so, this method fallbacks again: user_cred gids aren't
stored, and the worker process calls initgroups() itself and may block for
some time if LDAP/NDIS+ is in use.
diff 1297:f04b5f7d6137 Tue Nov 26 16:15:00 UTC 2019 Tiago Natel <t.nateldemoura@f5.com> Changed the group listing to run unprivileged when possible.

Now the nxt_user_groups_get() function uses getgrouplist(3) when available
(except MacOS, see below). For some platforms, getgrouplist() supports
a method of probing how much groups the user has but the behavior is not
consistent. The method used here consists of optimistically trying to get up
to min(256, NGROUPS_MAX) groups; only if ngroups returned exceeds the original
value, we do a second call. This method can block main's process if LDAP/NDIS+
is in use.

MacOS has getgrouplist(3) but it's buggy. It doesn't update ngroups if the
value passed is smaller than the number of groups the user has. Some
projects (like Go stdlib) call getgrouplist() in a loop, increasing ngroups
until it exceeds the number of groups user belongs to or fail when a limit
is reached. For performance reasons, this is to be avoided and MacOS is
handled in the fallback implementation.

The fallback implementation is the old Unit approach. It saves main's
user groups (getgroups(2)) and then calls initgroups(3) to load application's
groups in main, then does a second getgroups(2) to store the gids and restore
main's groups in the end. Because of initgroups(3)' call to setgroups(2),
this method requires root capabilities. In the case of OSX, which has
small NGROUPS_MAX by default (16), it's not possible to restore main's groups
if it's large; if so, this method fallbacks again: user_cred gids aren't
stored, and the worker process calls initgroups() itself and may block for
some time if LDAP/NDIS+ is in use.
diff 733:d8656b9d7293 Mon Jul 16 10:30:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Added getentropy() support.

Prodded by David Carlier.
diff 732:ab017ff0ee67 Mon Jul 16 10:17:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Supplied getrandom() test with commentary about supported OSes.
/unit/auto/modules/
H A Dconfdiff 87:ae678814949f Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> External Go app request processing.
diff 86:3b77edf46701 Fri Jun 23 16:20:00 UTC 2017 Max Romanov <max.romanov@nginx.com> PHP app request processing.
H A Dgodiff 1880:00dc6b211906 Tue May 25 15:00:00 UTC 2021 Max Romanov <max.romanov@nginx.com> Go: fixing tests for Go 1.16.

In Go 1.16, the module-aware mode is enabled by default; to fall back to
previous behavior, the GO111MODULE environment variable should be set to
'auto'.

Details: https://golang.org/doc/go1.16
diff 1344:da88d2612f96 Tue Jan 28 16:20:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Go: adding main configure CFLAGS and LDFLAGS to module build flags.

This makes ASAN buildbot workers to work out-of-the-box.
diff 270:d7774035f07b Mon Sep 04 16:09:00 UTC 2017 Andrei Belov <defan@nginx.com> Fixed permissions for Go sources.

In particular, it resolves a number of errors and warnings
reported by rpmlint(1).
H A Djavadiff 1496:9e14c63773be Thu May 28 16:04:00 UTC 2020 Tiago Natel de Moura <t.nateldemoura@f5.com> Packages: fixed java configure script.

Now the configure script appends /server to --lib-path argument.
diff 1217:ed8c4e263152 Wed Oct 02 16:11:00 UTC 2019 Max Romanov <max.romanov@nginx.com> Fixed "make tests" build without preceding "make".

Currently almost all Unit object files depends on generated nxt_version.h.
This patch adds missing dependence and fixes running make with multiple
jobs.

This closes #318 issue on GitHub.
H A Dnodejsdiff 867:ec44091ce04a Wed Dec 12 16:54:00 UTC 2018 Valentin Bartenev <vbart@nginx.com> Node.js: fixed global install in some cases.

By default "npm install" switches to non-privileged user to run package scripts
if it is invoked by root. As a result it may prevent node-gyp from writing to
package directory and break installation of the module.

To disable this switching the --unsafe-perm flag is added.
H A Dperldiff 1217:ed8c4e263152 Wed Oct 02 16:11:00 UTC 2019 Max Romanov <max.romanov@nginx.com> Fixed "make tests" build without preceding "make".

Currently almost all Unit object files depends on generated nxt_version.h.
This patch adds missing dependence and fixes running make with multiple
jobs.

This closes #318 issue on GitHub.
H A Dphpdiff 1217:ed8c4e263152 Wed Oct 02 16:11:00 UTC 2019 Max Romanov <max.romanov@nginx.com> Fixed "make tests" build without preceding "make".

Currently almost all Unit object files depends on generated nxt_version.h.
This patch adds missing dependence and fixes running make with multiple
jobs.

This closes #318 issue on GitHub.
H A Dpythondiff 1217:ed8c4e263152 Wed Oct 02 16:11:00 UTC 2019 Max Romanov <max.romanov@nginx.com> Fixed "make tests" build without preceding "make".

Currently almost all Unit object files depends on generated nxt_version.h.
This patch adds missing dependence and fixes running make with multiple
jobs.

This closes #318 issue on GitHub.
H A Drubydiff 1217:ed8c4e263152 Wed Oct 02 16:11:00 UTC 2019 Max Romanov <max.romanov@nginx.com> Fixed "make tests" build without preceding "make".

Currently almost all Unit object files depends on generated nxt_version.h.
This patch adds missing dependence and fixes running make with multiple
jobs.

This closes #318 issue on GitHub.
/unit/auto/os/
H A Dconfdiff 1255:944efece387a Thu Nov 07 16:53:00 UTC 2019 Valentin Bartenev <vbart@nginx.com> Respecting AR environment variable to configure ar binary.
diff 644:44f8dcca7f58 Sun Apr 15 16:44:00 UTC 2018 Sergey Kandaurov <pluknet@nginx.com> Enabled exporting symbols for OpenBSD.
H A Dtestdiff 1255:944efece387a Thu Nov 07 16:53:00 UTC 2019 Valentin Bartenev <vbart@nginx.com> Respecting AR environment variable to configure ar binary.
diff 589:97994a68391d Wed Mar 28 16:07:00 UTC 2018 Igor Sysoev <igor@sysoev.ru> Aligned macosx-version-min flag for test and build environments.

The flag has been misaligned in the changeset 4979fe09d9cd.
/unit/docs/
H A Dchanges.xmldiff 2196:7009706269f0 Tue Sep 13 08:16:00 UTC 2022 Andrei Zeliankou <zelenkov@nginx.com> Reordered changes for 1.28.0 by significance (subjective).
diff 2110:048281cd3d73 Thu May 26 12:38:00 UTC 2022 Alejandro Colomar <alx.manpages@gmail.com> Var: Added $request_uri (as in NGINX).

This supports a new variable $request_uri that contains the path
and the query (See RFC 3986, section 3). Its contents are percent
encoded. This is useful for example to redirect HTTP to HTTPS:

{
"return": "301",
"location": "https://$host$request_uri"
}

When <http://example.com/foo%23bar?baz> is requested, the server
redirects to <https://example.com/foo%23bar?baz>.

===

Testing:

//diff --git a/src/nxt_http_return.c b/src/nxt_http_return.c
//index 82c9156..adeb3a1 100644
//--- a/src/nxt_http_return.c
//+++ b/src/nxt_http_return.c
//@@ -196,6 +196,7 @@ nxt_http_return_send_ready(nxt_task_t *task,
void *obj, void *data)
// field->value = ctx->encoded.start;
// field->value_length = ctx->encoded.length;
// }
//+ fprintf(stderr, "ALX: target[%1$i]: <%2$.*1$s>\n",
(int)r->target.length, r->target.start);
//
// r->state = &nxt_http_return_send_state;
//

{
"listeners": {
"*:81": {
"pass": "routes/ru"
}
},

"routes": {
"ru": [{
"action": {
"return": 301,
"location": "$request_uri"
}
}]
}
}

$ curl -i http://localhost:81/*foo%2Abar?baz#arg
HTTP/1.1 301 Moved Permanently
Location: /*foo%2Abar?baz
Server: Unit/1.27.0
Date: Mon, 30 May 2022 16:04:30 GMT
Content-Length: 0

$ sudo cat /usr/local/unit.log | grep ALX
ALX: target[15]: </*foo%2Abar?baz>
diff 2019:8fcb7e44c663 Thu Nov 25 16:58:00 UTC 2021 Valentin Bartenev <vbart@nginx.com> PHP: fixed crash when calling module functions in OPcache preload.

In PHP, custom fastcgi_finish_request() and overloaded chdir() functions can be
invoked by an OPcache preloading script (it runs when php_module_startup() is
called in the app process setup handler). In this case, there was no runtime
context set so trying to access it caused a segmentation fault.

This closes #602 issue on GitHub.
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 1930:fb8b29aac7a1 Thu Aug 05 16:00:00 UTC 2021 Oisin Canty <o.canty@f5.com> Router: fixed crash when matching an empty address pattern array.

A crash would occur when the router tried to match an
against an empty address pattern array.

The following configuration was used to reproduce the
issue:

{
"listeners": {
"127.0.0.1:8082": {
"pass": "routes"
}
},
"routes": [
{
"match": {
"source": []
},
"action": {
"return": 200
}
}
]
}
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 1896:19eee884bd0b Fri May 28 15:16:00 UTC 2021 Valentin Bartenev <vbart@nginx.com> Version bump.
diff 1882:65e7dcdd7be4 Wed May 26 16:48:00 UTC 2021 Oisin Canty <o.canty@f5.com> MIME: added PHP.
diff 1811:cac57293c5c5 Tue Mar 02 16:33:00 UTC 2021 Max Romanov <max.romanov@nginx.com> Closing app outgoing shared memory file descriptor.

This fixes file descriptor leakage in router. Shared memory file used to
send data from router to application. These files are shared among all
processes of same application and router keeps the opened file descriptor since
06017e6e3a5f commit.
/unit/docs/man/
H A Dunitd.8.indiff 1824:e4a48cdb5d07 Wed Mar 24 16:49:00 UTC 2021 Artem Konev <artem.konev@nginx.com> Added a missing .El directive in man page source.
/unit/go/
H A Dnxt_cgo_lib.cdiff 1547:cbcd76704c90 Tue Aug 11 16:20:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Introducing the shared application port.

This is the port shared between all application processes which use it to pass
requests for processing. Using it significantly simplifies the request
processing code in the router. The drawback is 2 more file descriptors per each
configured application and more complex libunit message wait/read code.
diff 1544:05af370e63b7 Tue Aug 11 16:20:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Adding a reference counter to the libunit port structure.

The goal is to minimize the number of (pid, id) to port hash lookups which
require a library mutex lock. The response port is found once per request,
while the read port is initialized at startup.
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
H A Dnxt_cgo_lib.hdiff 1547:cbcd76704c90 Tue Aug 11 16:20:00 UTC 2020 Max Romanov <max.romanov@nginx.com> Introducing the shared application port.

This is the port shared between all application processes which use it to pass
requests for processing. Using it significantly simplifies the request
processing code in the router. The drawback is 2 more file descriptors per each
configured application and more complex libunit message wait/read code.

12345678910>>...13