From 015610f12d915d0ac28498bbd871ad5c67fd9b24 Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Mon, 22 Nov 2021 07:23:07 +0300 Subject: Version bump. --- docs/changes.xml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index df0b88c9..41adde1b 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -5,6 +5,35 @@ + + + + +NGINX Unit updated to 1.27.0. + + + + + + + + + + + -- cgit From 0af5f6ddb495902914880f540b44d8c828d945f1 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Thu, 25 Nov 2021 16:58:43 +0300 Subject: Fixing access_log structure reference counting. The reference to the access_log structure is stored in the current nxt_router_conf_t and the global nxt_router_t. When the reference is copied, the reference counter should be adjusted accordingly. This closes #593 issue on GitHub. --- docs/changes.xml | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 41adde1b..c0cc524e 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -31,6 +31,13 @@ NGINX Unit updated to 1.27.0. date="" time="" packager="Andrei Belov <defan@nginx.com>"> + + +the router process crash on reconfiguration if "access_log" was configured +without listeners. + + + -- cgit From 42e2105282cbfaf898d3f9b0eac7b288cc24cba1 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Thu, 25 Nov 2021 16:58:45 +0300 Subject: Added a changelog for 730e903f4534. --- docs/changes.xml | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index c0cc524e..b3803ffe 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -38,6 +38,13 @@ without listeners. + + +occasionally, the Unit daemon was unable to fully terminate; the bug had +appeared in 1.26.0. + + + -- cgit From f8237911d723ed1c8db0e4e5b75e1126b94f798a Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Thu, 25 Nov 2021 19:58:54 +0300 Subject: 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. --- docs/changes.xml | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index b3803ffe..1d4b9645 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -45,6 +45,13 @@ appeared in 1.26.0. + + +a segmentation fault occurred in the PHP module if chdir() or +fastcgi_finish_request() was called in the OPcache preloading script. + + + -- cgit From 64db3ef1bbf32457aefb002b9fecabb6c07923f9 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Wed, 1 Dec 2021 18:05:50 +0300 Subject: Fixing prototype process crash. A prototype stores linked application processes structures. When an application process terminates, it's removed from the list. To avoid double removal, the pointer to the next element should be set to NULL. The issue was introduced in c8790d2a89bb. --- docs/changes.xml | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 1d4b9645..f5792e85 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -52,6 +52,13 @@ fastcgi_finish_request() was called in the OPcache preloading script. + + +a prototype process could crash on an application process exit; the bug had +appeared in 1.26.0. + + + -- cgit From c6c74d117dee5ac747ae53ce7a1e75bb2b7470e1 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Wed, 1 Dec 2021 18:06:38 +0300 Subject: Disabling SCM_CREDS usage on DragonFly BSD. DragonFly BSD supports SCM_CREDS and SCM_RIGHTS, but only the first control message is passed correctly while the second one isn't processed by the kernel. This closes #599 issue on GitHub. --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index f5792e85..737fcb33 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -59,6 +59,12 @@ appeared in 1.26.0. + + +fatal errors on DragonFly BSD; the bug had appeared in 1.26.0. + + + -- cgit From 6e5dcdfe846575587ddfe4180ebcf39fe4f4bdce Mon Sep 17 00:00:00 2001 From: Artem Konev Date: Thu, 2 Dec 2021 14:12:13 +0000 Subject: Fixed grammar in "changes.xml". --- docs/changes.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 737fcb33..e7fe9532 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -33,7 +33,7 @@ NGINX Unit updated to 1.27.0. -the router process crash on reconfiguration if "access_log" was configured +the router process crashed on reconfiguration if "access_log" was configured without listeners. -- cgit From f8452838207d56892fb80b5976b37aab1efcaa1e Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Mon, 27 Dec 2021 16:37:35 +0300 Subject: Perl: creating input and error streams if closed. Application handler can do anything with a stream object (including close it). Once the stream is closed, Unit creates a new stream. This closes #616 issue on GitHub. --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 8890e4dc..4428401a 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -31,6 +31,12 @@ NGINX Unit updated to 1.27.0. date="" time="" packager="Andrei Belov <defan@nginx.com>"> + + +some Perl applications failed to process the request body, notably with Plack. + + + -- cgit From 818a78d82cd9aeb6c7429ef97cd1f39f9053b909 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Mon, 27 Dec 2021 16:37:36 +0300 Subject: Java: fixing multiple SCI initializations. - Ignoring Tomcat WebSocket container initialization. - Renaming application class loader to UnitClassLoader to avoid development environment enablement in Spring Boot. This closes #609 issue on GitHub. --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 4428401a..64a35da8 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -37,6 +37,12 @@ some Perl applications failed to process the request body, notably with Plack. + + +some Spring Boot applications failed to start, notably with Grails. + + + -- cgit From 2b5941df74806d344c59ec0ca126b81cc7bbffe1 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Tue, 8 Feb 2022 12:04:41 +0300 Subject: Python: fixing incorrect function object dereference. The __call__ method can be native and not be a PyFunction type. A type check is thus required before accessing op_code and other fields. Reproduced on Ubuntu 21.04, Python 3.9.4 and Falcon framework: here, the App.__call__ method is compiled with Cython, so accessing op_code->co_flags is invalid; accidentally, the COROUTINE bit is set which forces the Python module into the ASGI mode. The workaround is explicit protocol specification. Note: it is impossible to specify the legacy mode for ASGI. --- docs/changes.xml | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 64a35da8..a6b1178d 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -43,6 +43,13 @@ some Spring Boot applications failed to start, notably with Grails. + + +incorrect Python protocol auto detection (ASGI or WSGI) for native callable +object, notably with Falcon. + + + -- cgit From 4fcfb9d5fb2b1bfbb3bd87a8617d293cbf2f4ddf Mon Sep 17 00:00:00 2001 From: Zhidao HONG Date: Mon, 14 Feb 2022 20:14:03 +0800 Subject: Certificates: fixed crash when reallocating chain. --- docs/changes.xml | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index a6b1178d..3ef1ac3f 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -31,6 +31,13 @@ NGINX Unit updated to 1.27.0. date="" time="" packager="Andrei Belov <defan@nginx.com>"> + + +the controller process could crash when a chain with more than 4 +certificates was uploaded. + + + some Perl applications failed to process the request body, notably with Plack. -- cgit From aeed86c6829c62359e79f239b849766efb8857a7 Mon Sep 17 00:00:00 2001 From: Zhidao HONG Date: Tue, 22 Feb 2022 19:18:18 +0800 Subject: Workaround for the warning in nxt_realloc() on GCC 12. This closes #639 issue on Github. --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 3ef1ac3f..2e2f9b04 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -31,6 +31,12 @@ NGINX Unit updated to 1.27.0. date="" time="" packager="Andrei Belov <defan@nginx.com>"> + + +compatibility with GCC 12. + + + the controller process could crash when a chain with more than 4 -- cgit From 6fb7777ce73ba529327d307ca0722e66a7cb9262 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Tue, 5 Apr 2022 11:47:56 +0200 Subject: Supporting variables in "location". ............ Description: ............ Before this commit, the encoded URI could be calculated at configuration time. Now, since variables can only be resolved at request time, we have different situations: - "location" contains no variables: In this case, we still encode the URI in the conf structure, at configuration time, and then we just copy the resulting string to the ctx structure at request time. - "location" contains variables: In this case, we compile the var string at configure time, then when we resolve it at request time, and then we encode the string. In both cases, as was being done before, if the string is empty, either before or after resolving variables, we skip the encoding. ........... Usefulness: ........... An example of why this feature may be useful is redirecting HTTP to HTTPS with something like: "action": { "return": 301, "location": "https://${host}${uri}" } ..... Bugs: ..... This feature conflicts with the relevant RFCs in the following: '$' is used for Unit variables, but '$' is a reserved character in a URI, to be used as a sub-delimiter. However, it's almost never used as that, and in fact, other parts of Unit already conflict with '$' being a reserved character for use as a sub-delimiter, so this is at least consistent in that sense. VBart suggested an easy workaround if we ever need it: adding a variable '$sign' which resolves to a literal '$'. ...... Notes: ...... An empty string is handled as if "location" wasn't specified at all, so no Location header is sent. This is incorrect, and the code is slightly misleading. The Location header consists of a URI-reference[1], which might be a relative one, which itself might consist of an empty string[2]. [1]: [2]: Now that we have variables, it's more likely that an empty Location header will be requested, and we should handle it correctly. I think in a future commit we should modify the code to allow differentiating between an unset "location" and an empty one, which should be treated as any other "location" string. ................. Testing (manual): ................. { "listeners": { "*:80": { "pass": "routes/str" }, "*:81": { "pass": "routes/empty" }, "*:82": { "pass": "routes/var" }, "*:83": { "pass": "routes/enc-str" }, "*:84": { "pass": "routes/enc-var" } }, "routes": { "str": [ { "action": { "return": 301, "location": "foo" } } ], "empty": [ { "action": { "return": 301, "location": "" } } ], "var": [ { "action": { "return": 301, "location": "$host" } } ], "enc-str": [ { "action": { "return": 301, "location": "f%23o#o" } } ], "enc-var": [ { "action": { "return": 301, "location": "f%23o${host}#o" } } ] } } $ curl --dump-header - localhost:80 HTTP/1.1 301 Moved Permanently Location: foo Server: Unit/1.27.0 Date: Thu, 07 Apr 2022 23:30:06 GMT Content-Length: 0 $ curl --dump-header - localhost:81 HTTP/1.1 301 Moved Permanently Server: Unit/1.27.0 Date: Thu, 07 Apr 2022 23:30:08 GMT Content-Length: 0 $ curl --dump-header - localhost:82 HTTP/1.1 301 Moved Permanently Location: localhost Server: Unit/1.27.0 Date: Thu, 07 Apr 2022 23:30:15 GMT Content-Length: 0 $ curl --dump-header - -H "Host: bar" localhost:82 HTTP/1.1 301 Moved Permanently Location: bar Server: Unit/1.27.0 Date: Thu, 07 Apr 2022 23:30:23 GMT Content-Length: 0 $ curl --dump-header - -H "Host: " localhost:82 HTTP/1.1 301 Moved Permanently Server: Unit/1.27.0 Date: Thu, 07 Apr 2022 23:30:29 GMT Content-Length: 0 $ curl --dump-header - localhost:83 HTTP/1.1 301 Moved Permanently Location: f%23o#o Server: Unit/1.27.0 Date: Sat, 09 Apr 2022 11:22:23 GMT Content-Length: 0 $ curl --dump-header - -H "Host: " localhost:84 HTTP/1.1 301 Moved Permanently Location: f%23o#o Server: Unit/1.27.0 Date: Sat, 09 Apr 2022 11:22:44 GMT Content-Length: 0 $ curl --dump-header - -H "Host: alx" localhost:84 HTTP/1.1 301 Moved Permanently Location: f%23oalx#o Server: Unit/1.27.0 Date: Sat, 09 Apr 2022 11:22:52 GMT Content-Length: 0 $ curl --dump-header - -H "Host: a#l%23x" localhost:84 HTTP/1.1 301 Moved Permanently Location: f%2523oa#l%2523x%23o Server: Unit/1.27.0 Date: Sat, 09 Apr 2022 11:23:09 GMT Content-Length: 0 $ curl --dump-header - -H "Host: b##ar" localhost:82 HTTP/1.1 301 Moved Permanently Location: b#%23ar Server: Unit/1.27.0 Date: Sat, 09 Apr 2022 11:25:01 GMT Content-Length: 0 --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 2e2f9b04..e1774e9d 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -31,6 +31,12 @@ NGINX Unit updated to 1.27.0. date="" time="" packager="Andrei Belov <defan@nginx.com>"> + + +variables support in the "location" option of the "return" action. + + + compatibility with GCC 12. -- cgit From 0032543fa65f454c471c968998190b027c1ff270 Mon Sep 17 00:00:00 2001 From: Zhidao HONG Date: Wed, 9 Mar 2022 13:29:43 +0800 Subject: Ruby: added the Rack environment parameter "SCRIPT_NAME". --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index e1774e9d..ba7e41a3 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -31,6 +31,12 @@ NGINX Unit updated to 1.27.0. date="" time="" packager="Andrei Belov <defan@nginx.com>"> + + +Ruby Rack environment parameter "SCRIPT_NAME" support. + + + variables support in the "location" option of the "return" action. -- cgit From 5883a2670fbeb1610014ec122a5fd20312399a90 Mon Sep 17 00:00:00 2001 From: Zhidao HONG Date: Fri, 13 May 2022 19:33:40 +0800 Subject: Ruby: added stream IO "close" required by Rack specification. This closes #654 issue on Github. --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index ba7e41a3..af963bbb 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -49,6 +49,12 @@ compatibility with GCC 12. + + +Ruby Sinatra applications don't work without custom logging. + + + the controller process could crash when a chain with more than 4 -- cgit From 7066acb2ce438526fb0d60df443320d1c8366760 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Sat, 9 Apr 2022 21:27:12 +0200 Subject: Supporting empty Location URIs. An empty string in Location was being handled specially by not sending a Location header. This may occur after variable resolution, so we need to consider this scenario. The obsolete RFC 2616 defined the Location header as consisting of an absolute URI , which cannot be an empty string. However, the current RFC 7231 allows the Location to be a relative URI , and a relative URI may be an empty string . Due to these considerations, this patch allows sending an empty Location header without handling this case specially. This behavior will probably be more straightforward to users, too. It also simplifies the code, which is now more readable, fast, and conformant to the current RFC. We're skipping an allocation at request time in a common case such as "action": {"return": 404} --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index af963bbb..98650051 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -37,6 +37,12 @@ Ruby Rack environment parameter "SCRIPT_NAME" support. + + +supporting empty strings in the "location" option of the "return" action. + + + variables support in the "location" option of the "return" action. -- cgit From 9af5f369511eefea691a5cb6787a31ef3af53a0a Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Thu, 9 Dec 2021 03:00:23 +0100 Subject: Static: supporting new "index" option. This supports a new option "index" that configures a custom index file name to be served when a directory is requested. This initial support only allows a single fixed string. An example: { "share": "/www/data/static/$uri", "index": "lookatthis.htm" } When is requested, is served. Default is "index.html". === nxt_conf_validator.c: Accept "index" as a member of "share", and make sure it's a string. === I tried this feature in my own computer, where I tried the following: - Setting "index" to "lookatthis.htm", and check that the correct file is being served (check both a different name and a different extension). - Not setting "index", and check that is being served. - Settind "index" to an array of strings, and check that the configuration fails: { "error": "Invalid configuration.", "detail": "The \"index\" value must be a string, but not an array." } --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index 98650051..db352022 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -43,6 +43,12 @@ supporting empty strings in the "location" option of the "return" action. + + +ability to specify a custom index file name when serving static files. + + + variables support in the "location" option of the "return" action. -- cgit From 9bf614cd0874e0ef9fda3145faacd3ef3a5fb0ed Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Thu, 26 May 2022 14:38:42 +0200 Subject: 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 is requested, the server redirects to . === 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]: --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index db352022..c1cf96d2 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -55,6 +55,12 @@ variables support in the "location" option of the "return" action. + + +added new variable $request_uri with the same meaning as in NGINX. + + + compatibility with GCC 12. -- cgit From 0d5d81b2717a1707fc22020e6b27b4dea23d7595 Mon Sep 17 00:00:00 2001 From: Artem Konev Date: Wed, 1 Jun 2022 14:54:13 +0100 Subject: Fixed minor issues in "changes.xml". --- docs/changes.xml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index c1cf96d2..ce136e8d 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -31,33 +31,34 @@ NGINX Unit updated to 1.27.0. date="" time="" packager="Andrei Belov <defan@nginx.com>"> - + -Ruby Rack environment parameter "SCRIPT_NAME" support. +ability to specify a custom index file name when serving static files. - + -supporting empty strings in the "location" option of the "return" action. +variables support in the "location" option of the "return" action. -ability to specify a custom index file name when serving static files. +support empty strings in the "location" option of the "return" action. -variables support in the "location" option of the "return" action. +added a new variable, $request_uri, that includes both the path and the query +parts as per RFC 3986, sections 3-4. -added new variable $request_uri with the same meaning as in NGINX. +Ruby Rack environment parameter "SCRIPT_NAME" support. @@ -75,7 +76,7 @@ Ruby Sinatra applications don't work without custom logging. -the controller process could crash when a chain with more than 4 +the controller process could crash when a chain of more than four certificates was uploaded. -- cgit From bd80039e07500021664a10984977cf64902a4b81 Mon Sep 17 00:00:00 2001 From: Andrei Zeliankou Date: Thu, 2 Jun 2022 11:48:27 +0100 Subject: Node.js: fixed ES modules format in loader.mjs. Before Node.js v16.14.0 the "format" value in defaultResolve was ignored so error was hidden. For more information see: https://github.com/nodejs/node/pull/40980 --- docs/changes.xml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/changes.xml') diff --git a/docs/changes.xml b/docs/changes.xml index ce136e8d..ccd9439a 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -100,6 +100,12 @@ object, notably with Falcon. + + +ECMAScript modules did not work with the recent Node.js versions. + + + -- cgit