Commit Graph

1777 Commits

Author SHA1 Message Date
Zhidao HONG
53279af5d4 Static: support for openat2() features.
Support for chrooting, rejecting symlinks, and rejecting crossing mounting
points on a per-request basis during static file serving.
2021-04-29 22:04:34 +08:00
Zhidao HONG
113afb09ea Router: grouped app and share fields in nxt_http_action_t.
This is a prerequisite for further introduction of openat2() features.
No functional changes.
2021-04-22 13:13:06 +08:00
Andrei Belov
f90754f84a Packages: switched to common address for package maintainers. 2021-04-21 16:07:26 +03:00
Andrei Zeliankou
5b332cae83 Tests: fixed "skip" descriptors check flag for controller. 2021-04-14 15:56:03 +01:00
Konstantin Pavlov
d5889d7daa Packages: fixed Amazon Linux 2 module packages to use openssl 1.1 2021-04-12 18:39:45 +03:00
Max Romanov
74b1b1fc17 Tests: preserving unit.log when run without restart.
Introducing "unit.log.Log" class for "unit.log" file management.
Moving "findall()" function into TestApplicationProto.
Using "os.kill()" to send signals.
2021-04-08 19:11:11 +03:00
Konstantin Pavlov
30922c5741 Packages: moved Amazon Linux 2 packages to use openssl 1.1 2021-04-08 10:55:30 +03:00
Andrei Zeliankou
6c97a1a069 Tests: style. 2021-04-05 14:03:05 +01:00
Andrei Zeliankou
46d8567dd7 Tests: unset LC_ALL variable in Ruby encoding test.
This change is necessary to set Encoding.default_external value correctly.
2021-04-01 00:05:44 +01:00
Andrei Zeliankou
f43265ba2c Tests: removed skip_alert(). 2021-03-31 23:42:00 +01:00
Valentin Bartenev
a5eca0b83f Packages: fixed "dist" target to include man page in the archive. 2021-03-31 18:39:42 +03:00
Andrei Zeliankou
0ae75733f7 Tests: added file descriptor leak detection. 2021-03-31 03:24:01 +01:00
Andrei Zeliankou
e8577afc21 Tests: SNI. 2021-03-26 21:06:23 +00:00
Andrei Zeliankou
c093ee7ec5 Tests: added test for Ruby default encoding. 2021-03-26 15:42:58 +00:00
Andrei Belov
97b4de0d4a Packages: corrected permissions for /var/log/unit in rpm.
Found by rpmlint.
2021-03-26 18:29:26 +03:00
Andrei Belov
f11ad5288d Corrected man page permissions in manpage-install.
Found by rpmlint.
2021-03-26 18:28:59 +03:00
Valentin Bartenev
1ef72a79fe Version bump. 2021-03-26 11:29:41 +03:00
Valentin Bartenev
3c969905bd Added tag 1.23.0 for changeset 49ee24c03f57 2021-03-25 17:25:18 +03:00
Valentin Bartenev
71d3700951 Generated Dockerfiles for Unit 1.23.0. 2021-03-25 17:15:30 +03:00
Valentin Bartenev
6ecc9e8198 Added version 1.23.0 CHANGES. 2021-03-25 17:14:27 +03:00
Artem Konev
0e91854ad4 Fixed wording in docs/changes.xml for the 1.23.0 release. 2021-03-25 14:03:45 +00:00
Max Romanov
b8052b050e Fixing shm buffer leakage when sending over the port queue.
When the shm buffer is sent over the port queue, it needs to be completed
because it's sent over the port socket.
2021-03-25 16:55:16 +03:00
Valentin Bartenev
067c6096e2 Node.js: used distinct placeholder for version in "package.json".
This makes the "sed" instruction simpler and more portable, as the previous
variant didn't work well on BSD systems due to the "\s" metacharacter.

Thanks to Sergey A. Osokin <osa@FreeBSD.org.ru> for spotting this issue.

Also, this should prevent accidentally creating a version 1.0.0 package.
2021-03-25 16:15:03 +03:00
Max Romanov
c849483862 Node.js: fixing module global installation.
Globally installed modules require a globally installed libunit.
The "binding_pub.gyp" file is the correct version, otherwise linked module
may have unresolved symbols because libunit is not linked.
2021-03-25 16:09:24 +03:00
Max Romanov
9957a959df Releasing shm buffers for large body requests.
This fixes memory and shm file descriptor leakage that occurred when a large
request body was passed via shared memory.  The leakage was caught with the
"test_settings_body_buffer_size" test.  The main condition is the
"body_buffer_size" value exceeding 10 Mb (a shm segment).  Thus, the router was
forced to split the body into several shm segments, but these buffers were not
freed because of dummy completion handlers.
2021-03-25 14:16:30 +03:00
Andrey Suvorov
d2b0882d89 Added ability to configure multiple certificates on a listener.
The certificate is selected by matching the arriving SNI to the common name and
the alternatives names.  If no certificate matches the name, the first bundle in
the array is chosen.
2021-03-24 13:19:36 -07:00
Konstantin Pavlov
d62192738f Packages: added man page on rpm-based systems. 2021-03-24 18:45:45 +03:00
Konstantin Pavlov
4a2dcb46dd Packages: added man page on debian-based systems. 2021-03-24 18:45:45 +03:00
Konstantin Pavlov
b33babceda Added build system support for a man page. 2021-03-24 18:45:45 +03:00
Artem Konev
6d7c6196e1 Added a missing .El directive in man page source. 2021-03-24 16:49:59 +00:00
Artem Konev
4d28ea2e24 Added a man page.
Reviewed at https://rb.nginx.com/r/165/
2021-03-24 15:43:16 +00:00
Valentin Bartenev
699a3ea2eb Certificates: fixed in name attributes processing.
The idea is to put SAN after CN, but the previous version of the code
incorrectly assumed that CN was always present, which caused writes
outside the allocated object if there were no standard name attributes.
2021-03-24 16:55:47 +03:00
Valentin Bartenev
a6c6dcf5f7 Certificates: moved SAN processing to a separate function.
No functional changes.
2021-03-24 16:38:05 +03:00
Valentin Bartenev
f18a41c84b Certficates: fixed counting DNS SAN entries.
Previously, entries of any type were counted during object allocation
but only DNS type entries were actually processed.  As a result,
if some certificate entries had another type, returning information
about the certificate caused uninitialized memory access.
2021-03-24 16:38:05 +03:00
Max Romanov
178f232b3a Tests: fixed racing condition in websocket test 5_15.
Test case: "send a text message split into two fragments, then a continuation
frame with FIN = false where there is nothing to continue, then an unfragmented
text message, all sent in one chop".

The test case investigates immediate connection closing since there is no
message to continue.

The mirror server may send a response for the first frame before the test
сontinuation frame is received by the router.  In this case, the test will
receive a text frame before the close frame.
2021-03-24 11:43:41 +03:00
Max Romanov
f267dd0a8d Workaround for an OpenSSL bug about not closing /dev/*random.
This is a workaround for an issue in OpenSSL 1.1.1, where the /dev/random and
/dev/urandom files remain open after all listening sockets were removed:

 - https://github.com/openssl/openssl/issues/7419
2021-03-24 11:43:31 +03:00
Valentin Bartenev
b04832da84 Disabled logging alerts to syslog.
It feels to be causing more harm than good, because syslog() can be blocking,
which is even more critical under resource exhaustion conditions when some
alerts are expected.
2021-03-24 08:05:07 +03:00
Sergey A. Osokin
175ef1c1db Java: upgrading third-party components. 2021-03-22 17:15:12 +03:00
Valentin Bartenev
99337728ed Fixed building the PHP 5 module with ZTS, broken by dab8544b5440.
This closes #525 issue on GitHub.
2021-03-15 15:03:32 +03:00
Valentin Bartenev
4c261a7ff8 Ruby: fixed encodings initialization.
The Ruby interpreter expects an explicit setlocale() call before initialization
to pick up character encodings in the "Encoding" class from the environment.

This closes #531 issue on GitHub.
2021-03-15 15:03:32 +03:00
Valentin Bartenev
b0a1266835 Fixed certificates loading on startup with some filesystems.
It appears that readdir() on Linux detects file types unreliably, always setting
the "d_type" field to DT_UNKNOWN for some less common filesystems.  As a result,
all files were skipped and no certificate bundles were found when the state
directory was located on such filesystems.

Skipping "." and ".." instead of any non-regular files should be enough, as no
other non-regular files normally appear in this directory.

This closes #368 issue on GitHub.
2021-03-15 14:57:31 +03:00
Valentin Bartenev
a1107e859b Fixed TLS connection shutdown on errors.
An immediate return statement on connection errors was mistakenly added to the
beginning of nxt_openssl_conn_io_shutdown() in ecd3c5bbf7d8, breaking the TLS
connection finalization procedure.  As a result, a TLS connection was left
unfinalized if it had been closed prematurely or a fatal protocol error had
occurred, which caused memory and socket descriptor leakage.

Moreover, in some cases (notably, on handshake errors in tests with kqueue on
macOS) the read event was triggered later and nxt_h1p_conn_error() was called
the second time; after the change in af93c866b4f0, the latter call crashed the
router process in an attempt to remove a connection from the idle queue twice.
2021-03-15 14:57:01 +03:00
Max Romanov
1950d0aee2 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.
2021-03-02 19:33:37 +03:00
Max Romanov
73ac0496fe Fixing warnings on Solaris.
pthread_t on Solaris is an integer type with size not equal to pointer size.
To avoid warnings, type casts to and from pointer needs to be done via
uintptr_t type.

This change originally proposed by Juraj Lutter <juraj@lutter.sk>.
2021-03-02 18:31:03 +03:00
Max Romanov
fddde539c9 Fixing NetBSD compatibility.
Instead of PTHREAD_STACK_MIN define, NetBSD requires to get minimum stack
size using sysctl(_SC_THREAD_STACK_MIN).

This change originally proposed by Juraj Lutter <juraj@lutter.sk>.
2021-03-02 18:30:34 +03:00
Andrei Zeliankou
d0591f07d7 Tests: fixed tests to work without openssl support. 2021-02-23 22:25:47 +00:00
Andrei Zeliankou
af3b6ef37d Tests: added regex check. 2021-02-18 21:21:55 +00:00
Valentin Bartenev
ecd0fc5d81 Version bump. 2021-02-16 18:54:00 +03:00
Andrei Zeliankou
cf530e19bc Tests: clear certificates after each test. 2021-02-15 03:11:26 +00:00
Andrei Zeliankou
11f7d833a9 Tests: increased timeout in wait_for_record(). 2021-02-10 16:34:37 +00:00