summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2008-07-07 12:09:31 +0000
committerJonathan Kolb <jon@b0g.us>2008-07-07 12:09:31 +0000
commit8863dd8559a49fd8a748aa5f37b03c45e369436f (patch)
tree3d23102d9c48586c105cae62b8aa06387602c1ce
parentc7ca0c3d39814ee70bb3bf513dbf3b94e2110111 (diff)
downloadnginx-0.5.37.tar.gz
Changes with nginx 0.5.37 07 Jul 2008v0.5.37
*) Bugfix: if sub_filter and SSI were used together, then responses might were transferred incorrectly. *) Bugfix: large SSI inclusions might be truncated. *) Bugfix: worker processes might not catch reconfiguration and log rotation signals. *) Bugfix: nginx could not be built on latest Fedora 9 Linux. Thanks to Roxis. *) Bugfix: a segmentation fault might occur in worker process on Linux, if keepalive was enabled. *) Bugfix: an alert "sendmsg() failed (9: Bad file descriptor)" on some 64-bit platforms while reconfiguration.
-rw-r--r--CHANGES307
-rw-r--r--CHANGES.ru21
-rw-r--r--src/core/nginx.h2
-rw-r--r--src/http/modules/ngx_http_ssi_filter_module.c5
-rw-r--r--src/http/modules/ngx_http_sub_filter_module.c4
-rw-r--r--src/http/modules/perl/nginx.pm2
-rw-r--r--src/http/ngx_http_postpone_filter_module.c15
-rw-r--r--src/http/ngx_http_request.c5
-rw-r--r--src/os/unix/ngx_channel.c4
-rw-r--r--src/os/unix/ngx_freebsd_config.h7
-rw-r--r--src/os/unix/ngx_linux_config.h1
-rw-r--r--src/os/unix/ngx_posix_config.h7
-rw-r--r--src/os/unix/ngx_process_cycle.c91
13 files changed, 279 insertions, 192 deletions
diff --git a/CHANGES b/CHANGES
index bcdf23438..ab57314a2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,24 @@
+Changes with nginx 0.5.37 07 Jul 2008
+
+ *) Bugfix: if sub_filter and SSI were used together, then responses
+ might were transferred incorrectly.
+
+ *) Bugfix: large SSI inclusions might be truncated.
+
+ *) Bugfix: worker processes might not catch reconfiguration and log
+ rotation signals.
+
+ *) Bugfix: nginx could not be built on latest Fedora 9 Linux.
+ Thanks to Roxis.
+
+ *) Bugfix: a segmentation fault might occur in worker process on Linux,
+ if keepalive was enabled.
+
+ *) Bugfix: an alert "sendmsg() failed (9: Bad file descriptor)" on some
+ 64-bit platforms while reconfiguration.
+
+
Changes with nginx 0.5.36 04 May 2008
*) Bugfix: the "sub_filter" directive might set text to change into
@@ -11,17 +31,17 @@ Changes with nginx 0.5.36 04 May 2008
check a response length.
*) Bugfix: nginx issued the bogus error message "SSL_shutdown() failed
- (SSL: )"; bug appeared in 0.5.35.
+ (SSL: )"; the bug had appeared in 0.5.35.
*) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
- error; bug appeared in 0.5.35.
+ error; the bug had appeared in 0.5.35.
*) Bugfix: the "fastcgi_catch_stderr" directive did return error code;
now it returns 502 code, that can be rerouted to a next server using
the "fastcgi_next_upstream invalid_header" directive.
*) Bugfix: a segmentation fault occurred in master process if the
- "fastcgi_catch_stderr" directive was used; bug appeared in
+ "fastcgi_catch_stderr" directive was used; the bug had appeared in
0.5.32.
Thanks to Manlio Perillo.
@@ -38,7 +58,7 @@ Changes with nginx 0.5.35 08 Jan 2008
Thanks to Alexander V. Inyukhin.
*) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
- error; bug appeared in 0.5.13.
+ error; the bug had appeared in 0.5.13.
*) Bugfix: the STARTTLS in SMTP mode did not work.
Thanks to Oleg Motienko.
@@ -54,7 +74,7 @@ Changes with nginx 0.5.35 08 Jan 2008
returned response in HTTP/0.9 version.
*) Bugfix: if the "?" character was in a "error_page" directive, then
- it was escaped in a proxied request; bug appeared in 0.5.32.
+ it was escaped in a proxied request; the bug had appeared in 0.5.32.
Changes with nginx 0.5.34 13 Dec 2007
@@ -83,7 +103,7 @@ Changes with nginx 0.5.34 13 Dec 2007
server, then nginx returned usual response.
*) Bugfix: URL double escaping in a redirect of the "msie_refresh"
- directive; bug appeared in 0.5.28.
+ directive; the bug had appeared in 0.5.28.
*) Bugfix: a segmentation fault might occur in worker process if
subrequests were used.
@@ -147,8 +167,8 @@ Changes with nginx 0.5.33 07 Nov 2007
memcached was used.
*) Bugfix: nginx supported low case only "close" and "keep-alive"
- values in the "Connection" request header line; bug appeared in
- 0.5.32.
+ values in the "Connection" request header line; the bug had appeared
+ in 0.5.32.
*) Bugfix: nginx could not start on Solaris if the shared PCRE library
located in non-standard place was used.
@@ -217,8 +237,8 @@ Changes with nginx 0.5.32 24 Sep 2007
for HTTP and HTTPS, then nginx used only one port - 80 or 443.
*) Bugfix: the "proxy_ignore_client_abort" and
- "fastcgi_ignore_client_abort" directives did not work; bug appeared
- in 0.5.13.
+ "fastcgi_ignore_client_abort" directives did not work; the bug had
+ appeared in 0.5.13.
Changes with nginx 0.5.31 15 Aug 2007
@@ -249,7 +269,7 @@ Changes with nginx 0.5.30 30 Jul 2007
to the master process identification number.
*) Bugfix: fix building on Solaris/amd64 by Sun Studio 11 and early
- versions; bug appeared in 0.5.29.
+ versions; the bug had appeared in 0.5.29.
Changes with nginx 0.5.29 23 Jul 2007
@@ -301,7 +321,8 @@ Changes with nginx 0.5.26 17 Jun 2007
Changes with nginx 0.5.25 11 Jun 2007
*) Bugfix: nginx could not be built with the
- --without-http_rewrite_module parameter; bug appeared in 0.5.24.
+ --without-http_rewrite_module parameter; the bug had appeared in
+ 0.5.24.
Changes with nginx 0.5.24 06 Jun 2007
@@ -310,7 +331,7 @@ Changes with nginx 0.5.24 06 Jun 2007
was made using HTTP/0.9.
*) Bugfix: a part of response body might be passed uncompressed if gzip
- was used; bug appeared in 0.5.23.
+ was used; the bug had appeared in 0.5.23.
Changes with nginx 0.5.23 04 Jun 2007
@@ -333,8 +354,8 @@ Changes with nginx 0.5.23 04 Jun 2007
Changes with nginx 0.5.22 29 May 2007
- *) Bugfix: a big request body might not be passed to backend; bug
- appeared in 0.5.21.
+ *) Bugfix: a big request body might not be passed to backend; the bug
+ had appeared in 0.5.21.
Changes with nginx 0.5.21 28 May 2007
@@ -407,11 +428,12 @@ Changes with nginx 0.5.18 19 Apr 2007
*) Bugfix: a segmentation fault occurred in master process after first
reconfiguration and receiving any signal if nginx was built with
- ngx_http_perl_module and perl did not support multiplicity; bug
- appeared in 0.5.9.
+ ngx_http_perl_module and perl did not support multiplicity; the bug
+ had appeared in 0.5.9.
*) Bugfix: if perl did not support multiplicity, then after
- reconfiguration perl code did not work; bug appeared in 0.3.38.
+ reconfiguration perl code did not work; the bug had appeared in
+ 0.3.38.
Changes with nginx 0.5.17 02 Apr 2007
@@ -438,14 +460,14 @@ Changes with nginx 0.5.16 26 Mar 2007
*) Bugfix: a segmentation fault might occur in worker process if a
charset was set in the "Content-Type" header line and the line has
- trailing ";"; bug appeared in 0.3.50.
+ trailing ";"; the bug had appeared in 0.3.50.
*) Bugfix: the "[alert] zero size buf" error when FastCGI server was
used and a request body written in a temporary file was multiple of
32K.
*) Bugfix: nginx could not be built on Solaris without the --with-debug
- option; bug appeared in 0.5.15.
+ option; the bug had appeared in 0.5.15.
Changes with nginx 0.5.15 19 Mar 2007
@@ -501,17 +523,17 @@ Changes with nginx 0.5.13 19 Feb 2007
send timeout only.
*) Bugfix: nginx could not be built on platforms different from i386,
- amd64, sparc and ppc; bug appeared in 0.5.8.
+ amd64, sparc, and ppc; the bug had appeared in 0.5.8.
Changes with nginx 0.5.12 12 Feb 2007
*) Bugfix: nginx could not be built on platforms different from i386,
- amd64, sparc и ppc; bug appeared in 0.5.8.
+ amd64, sparc, and ppc; the bug had appeared in 0.5.8.
*) Bugfix: a segmentation fault might occur in worker process if the
- temporarily files were used while working with FastCGI server; bug
- appeared in 0.5.8.
+ temporarily files were used while working with FastCGI server; the
+ bug had appeared in 0.5.8.
*) Bugfix: a segmentation fault might occur in worker process if the
$fastcgi_script_name variable was logged.
@@ -525,7 +547,7 @@ Changes with nginx 0.5.11 05 Feb 2007
Thanks to Chris McGrath.
*) Bugfix: the response was incorrect if several ranges were requested;
- bug appeared in 0.5.6.
+ the bug had appeared in 0.5.6.
*) Bugfix: the "create_full_put_path" directive could not create the
intermediate directories if no "dav_access" directive was set.
@@ -541,10 +563,10 @@ Changes with nginx 0.5.11 05 Feb 2007
Changes with nginx 0.5.10 26 Jan 2007
*) Bugfix: while online executable file upgrade the new master process
- did not inherit the listening sockets; bug appeared in 0.5.9.
+ did not inherit the listening sockets; the bug had appeared in 0.5.9.
*) Bugfix: a segmentation fault might occur in worker process if nginx
- was built with -O2 optimization; bug appeared in 0.5.1.
+ was built with -O2 optimization; the bug had appeared in 0.5.1.
Changes with nginx 0.5.9 25 Jan 2007
@@ -580,7 +602,7 @@ Changes with nginx 0.5.8 19 Jan 2007
*) Bugfix: if the "proxy_buffering off" directive was used and a client
connection was non-active, then the connection was closed after send
- timeout; bug appeared in 0.4.7.
+ timeout; the bug had appeared in 0.4.7.
*) Bugfix: if the "epoll" method was used and a client closed a
connection prematurely, then nginx closed the connection after a
@@ -661,7 +683,7 @@ Changes with nginx 0.5.4 15 Dec 2006
directive, then nginx might report about configuration error.
*) Bugfix: a segmentation fault might occur if the $host variable was
- used; bug appeared in 0.4.14.
+ used; the bug had appeared in 0.4.14.
Changes with nginx 0.5.3 13 Dec 2006
@@ -678,8 +700,8 @@ Changes with nginx 0.5.3 13 Dec 2006
Changes with nginx 0.5.2 11 Dec 2006
*) Bugfix: if the "proxy_pass" directive used the name of the
- "upstream" block, then nginx tried to resolve the name; bug appeared
- in 0.5.1.
+ "upstream" block, then nginx tried to resolve the name; the bug had
+ appeared in 0.5.1.
Changes with nginx 0.5.1 11 Dec 2006
@@ -687,19 +709,20 @@ Changes with nginx 0.5.1 11 Dec 2006
*) Bugfix: the "post_action" directive might not run after a
unsuccessful completion of a request.
- *) Workaround: for Eudora for Mac; bug appeared in 0.4.11.
+ *) Workaround: for Eudora for Mac; the bug had appeared in 0.4.11.
Thanks to Bron Gondwana.
*) Bugfix: if the "upstream" name was used in the "fastcgi_pass", then
- the message "no port in upstream" was issued; bug appeared in 0.5.0.
+ the message "no port in upstream" was issued; the bug had appeared
+ in 0.5.0.
*) Bugfix: if the "proxy_pass" and "fastcgi_pass" directives used the
same servers but different ports, then these directives uses the
- first described port; bug appeared in 0.5.0.
+ first described port; the bug had appeared in 0.5.0.
*) Bugfix: if the "proxy_pass" and "fastcgi_pass" directives used the
unix domain sockets, then these directives used first described
- socket; bug appeared in 0.5.0.
+ socket; the bug had appeared in 0.5.0.
*) Bugfix: ngx_http_auth_basic_module ignored the user if it was in the
last line in the password file and there was no the carriage return,
@@ -728,8 +751,8 @@ Changes with nginx 0.5.0 04 Dec 2006
*) Feature: the WAIT status in the "Auth-Status" header line of the
IMAP/POP3 proxy authentication server response.
- *) Bugfix: nginx could not be built on 64-bit platforms; bug appeared
- in 0.4.14.
+ *) Bugfix: nginx could not be built on 64-bit platforms; the bug had
+ appeared in 0.4.14.
Changes with nginx 0.4.14 27 Nov 2006
@@ -740,7 +763,7 @@ Changes with nginx 0.4.14 27 Nov 2006
Linux, and NetBSD.
*) Bugfix: ngx_http_perl_module did not work with perl built with the
- threads support; bug appeared in 0.3.38.
+ threads support; the bug had appeared in 0.3.38.
*) Bugfix: ngx_http_perl_module did not work if perl was called
recursively.
@@ -775,7 +798,7 @@ Changes with nginx 0.4.13 15 Nov 2006
the deferred accept() were used.
*) Bugfix: a charset could not be set for ngx_http_autoindex_module
- responses; bug appeared in 0.3.50.
+ responses; the bug had appeared in 0.3.50.
*) Bugfix: the "[alert] zero size buf" error when FastCGI server was
used;
@@ -783,8 +806,8 @@ Changes with nginx 0.4.13 15 Nov 2006
*) Bugfix: the --group= configuration parameter was ignored.
Thanks to Thomas Moschny.
- *) Bugfix: the 50th subrequest in SSI response did not work; bug
- appeared in 0.3.50.
+ *) Bugfix: the 50th subrequest in SSI response did not work; the bug
+ had appeared in 0.3.50.
Changes with nginx 0.4.12 31 Oct 2006
@@ -805,7 +828,7 @@ Changes with nginx 0.4.11 25 Oct 2006
method.
*) Bugfix: if the APOP was enabled in the POP3 proxy, then the
- USER/PASS commands might not work; bug appeared in 0.4.10.
+ USER/PASS commands might not work; the bug had appeared in 0.4.10.
Changes with nginx 0.4.10 23 Oct 2006
@@ -820,10 +843,10 @@ Changes with nginx 0.4.10 23 Oct 2006
variable was used in the "map" directive.
*) Bugfix: the ngx_http_flv_module did not support the byte ranges for
- full responses; bug appeared in 0.4.7.
+ full responses; the bug had appeared in 0.4.7.
- *) Bugfix: nginx could not be built on Debian amd64; bug appeared in
- 0.4.9.
+ *) Bugfix: nginx could not be built on Debian amd64; the bug had
+ appeared in 0.4.9.
Changes with nginx 0.4.9 13 Oct 2006
@@ -876,14 +899,14 @@ Changes with nginx 0.4.6 06 Oct 2006
$r->headers_out("Content-Length", ...) method.
*) Bugfix: after redirecting error by an "error_page" directive any
- ngx_http_rewrite_module directive returned this error code; bug
- appeared in 0.4.4.
+ ngx_http_rewrite_module directive returned this error code; the bug
+ had appeared in 0.4.4.
Changes with nginx 0.4.5 02 Oct 2006
- *) Bugfix: nginx could not be built on Linux and Solaris; bug appeared
- in 0.4.4.
+ *) Bugfix: nginx could not be built on Linux and Solaris; the bug had
+ appeared in 0.4.4.
Changes with nginx 0.4.4 02 Oct 2006
@@ -918,7 +941,7 @@ Changes with nginx 0.4.3 26 Sep 2006
error to the proxied server using a "proxy_pass" directive.
*) Bugfix: a segmentation fault occurred if an unix domain socket was
- used in a "proxy_pass" directive; bug appeared in 0.3.47.
+ used in a "proxy_pass" directive; the bug had appeared in 0.3.47.
*) Bugfix: SSI did work with memcached and nonbuffered responses.
@@ -927,8 +950,8 @@ Changes with nginx 0.4.3 26 Sep 2006
Changes with nginx 0.4.2 14 Sep 2006
- *) Bugfix: the O_NOATIME flag support on Linux was canceled; bug
- appeared in 0.4.1.
+ *) Bugfix: the O_NOATIME flag support on Linux was canceled; the bug
+ had appeared in 0.4.1.
Changes with nginx 0.4.1 14 Sep 2006
@@ -962,7 +985,7 @@ Changes with nginx 0.4.0 30 Aug 2006
*) Bugfix: a segmentation fault occurred if there was an "index"
directive with variables and the first index name was without
- variables; bug appeared in 0.1.29.
+ variables; the bug had appeared in 0.1.29.
Changes with nginx 0.3.61 28 Aug 2006
@@ -980,7 +1003,7 @@ Changes with nginx 0.3.61 28 Aug 2006
Changes with nginx 0.3.60 18 Aug 2006
*) Bugfix: a worker process may got caught in an endless loop while an
- error redirection; bug appeared in 0.3.59.
+ error redirection; the bug had appeared in 0.3.59.
Changes with nginx 0.3.59 16 Aug 2006
@@ -992,7 +1015,7 @@ Changes with nginx 0.3.59 16 Aug 2006
*) Bugfix: the "error_page" directive did not changes the
"Content-Type" header line after the "X-Accel-Redirect" was used;
- bug appeared in 0.3.58.
+ the bug had appeared in 0.3.58.
Changes with nginx 0.3.58 14 Aug 2006
@@ -1060,8 +1083,8 @@ Changes with nginx 0.3.55 28 Jul 2006
upstream.
*) Bugfix: on some condition while reconfiguration character codes
- inside the "charset_map" may be treated invalid; bug appeared in
- 0.3.50.
+ inside the "charset_map" may be treated invalid; the bug had
+ appeared in 0.3.50.
Changes with nginx 0.3.54 11 Jul 2006
@@ -1080,8 +1103,8 @@ Changes with nginx 0.3.54 11 Jul 2006
*) Bugfix: the $upstream_response_time variable had the time of the
first request to a backend only.
- *) Bugfix: nginx could not be built on amd64 platform; bug appeared in
- 0.3.53.
+ *) Bugfix: nginx could not be built on amd64 platform; the bug had
+ appeared in 0.3.53.
Changes with nginx 0.3.53 07 Jul 2006
@@ -1114,10 +1137,10 @@ Changes with nginx 0.3.52 03 Jul 2006
return the 405 error.
*) Bugfix: the worker process may got caught in an endless loop if the
- limit rate was used; bug appeared in 0.3.37.
+ limit rate was used; the bug had appeared in 0.3.37.
*) Bugfix: ngx_http_charset_module logged "unknown charset" alert, even
- if the recoding was not needed; bug appeared in 0.3.50.
+ if the recoding was not needed; the bug had appeared in 0.3.50.
*) Bugfix: if a code response of the PUT request was 409, then a
temporary file was not removed.
@@ -1126,7 +1149,7 @@ Changes with nginx 0.3.52 03 Jul 2006
Changes with nginx 0.3.51 30 Jun 2006
*) Bugfix: the "<" symbols might disappeared some conditions in the
- SSI; bug appeared in 0.3.50.
+ SSI; the bug had appeared in 0.3.50.
Changes with nginx 0.3.50 28 Jun 2006
@@ -1171,10 +1194,11 @@ Changes with nginx 0.3.48 29 May 2006
*) Bugfix: the internal redirect always transform client's HTTP method
to GET, now the transformation is made for the "X-Accel-Redirect"
- redirects only and if the method is not HEAD; bug appeared in 0.3.42.
+ redirects only and if the method is not HEAD; the bug had appeared
+ in 0.3.42.
*) Bugfix: the ngx_http_perl_module could not be built, if the perl was
- built with the threads support; bug appeared in 0.3.46.
+ built with the threads support; the bug had appeared in 0.3.46.
Changes with nginx 0.3.47 23 May 2006
@@ -1211,7 +1235,8 @@ Changes with nginx 0.3.45 06 May 2006
*) Change: the &deg; symbol codes were changed in koi-win conversion
table.
- *) Feature: the euro и N symbols were added to koi-win conversion table.
+ *) Feature: the euro and N symbols were added to koi-win conversion
+ table.
*) Bugfix: if nginx distributed the requests among several backends and
some backend failed, then requests intended for this backend was
@@ -1288,9 +1313,9 @@ Changes with nginx 0.3.39 17 Apr 2006
*) Bugfix: the active connection counter increased on the exceeding of
the connection limit specified by the "worker_connections"
- directive; bug appeared in 0.2.0.
+ directive; the bug had appeared in 0.2.0.
- *) Bugfix: the limit rate might not work on some condition; bug
+ *) Bugfix: the limit rate might not work on some condition; the bug had
appeared in 0.3.38.
@@ -1364,7 +1389,7 @@ Changes with nginx 0.3.36 05 Apr 2006
Changes with nginx 0.3.35 22 Mar 2006
*) Bugfix: the accept-filter and the TCP_DEFER_ACCEPT option were set
- for first "listen" directive only; bug appeared in 0.3.31.
+ for first "listen" directive only; the bug had appeared in 0.3.31.
*) Bugfix: in the "proxy_pass" directive without the URI part in a
subrequest.
@@ -1389,7 +1414,7 @@ Changes with nginx 0.3.33 15 Mar 2006
Changes with nginx 0.3.32 11 Mar 2006
*) Bugfix: the debug logging on startup and reconfiguration time was
- removed; bug appeared in 0.3.31.
+ removed; the bug had appeared in 0.3.31.
Changes with nginx 0.3.31 10 Mar 2006
@@ -1407,7 +1432,8 @@ Changes with nginx 0.3.31 10 Mar 2006
*) Bugfix: if there were several "listen" directives listening one
various addresses inside one server, then server names like
- "*.domain.tld" worked for first address only; bug appeared in 0.3.18.
+ "*.domain.tld" worked for first address only; the bug had appeared
+ in 0.3.18.
*) Bugfix: if the HTTPS protocol was used in the "proxy_pass" directive
and the request body was in temporarily file then the request was
@@ -1425,7 +1451,7 @@ Changes with nginx 0.3.30 22 Feb 2006
ngx_http_ssi_filter_module.
*) Bugfix: nginx could not be built on i386 platform, if the PIC was
- used; bug appeared in 0.3.27.
+ used; the bug had appeared in 0.3.27.
Changes with nginx 0.3.29 20 Feb 2006
@@ -1501,8 +1527,8 @@ Changes with nginx 0.3.26 03 Feb 2006
Changes with nginx 0.3.25 01 Feb 2006
*) Bugfix: the segmentation fault was occurred on start or while
- reconfiguration if there was invalid configuration; bug appeared in
- 0.3.24.
+ reconfiguration if there was invalid configuration; the bug had
+ appeared in 0.3.24.
Changes with nginx 0.3.24 01 Feb 2006
@@ -1518,8 +1544,8 @@ Changes with nginx 0.3.24 01 Feb 2006
location.
*) Bugfix: on 64-bit platforms segmentation fault may occurred on start
- if the many names were used in the "server_name" directives; bug
- appeared in 0.3.18.
+ if the many names were used in the "server_name" directives; the bug
+ had appeared in 0.3.18.
Changes with nginx 0.3.23 24 Jan 2006
@@ -1542,8 +1568,8 @@ Changes with nginx 0.3.22 17 Jan 2006
canceled.
*) Bugfix: segmentation fault was occurred if the "none" or "blocked"
- values was specified in the "valid_referers" directive; bug appeared
- in 0.3.18.
+ values was specified in the "valid_referers" directive; the bug had
+ appeared in 0.3.18.
Changes with nginx 0.3.21 16 Jan 2006
@@ -1594,10 +1620,10 @@ Changes with nginx 0.3.18 26 Dec 2005
ngx_http_map_module.
*) Bugfix: segmentation fault was occurred if configuration file did
- not exist; bug appeared in 0.3.12.
+ not exist; the bug had appeared in 0.3.12.
*) Bugfix: on 64-bit platforms segmentation fault may occurred on
- start; bug appeared in 0.3.16.
+ start; the bug had appeared in 0.3.16.
Changes with nginx 0.3.17 18 Dec 2005
@@ -1608,8 +1634,8 @@ Changes with nginx 0.3.17 18 Dec 2005
*) Feature: the "map" directive supports domain names in the
".domain.tld" form.
- *) Bugfix: the timeouts were not used in SSL handshake; bug appeared in
- 0.2.4.
+ *) Bugfix: the timeouts were not used in SSL handshake; the bug had
+ appeared in 0.2.4.
*) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
@@ -1635,11 +1661,11 @@ Changes with nginx 0.3.16 16 Dec 2005
*) Bugfix: the "config timefmt" SSI command set incorrect time format.
*) Bugfix: nginx did not close connection to IMAP/POP3 backend for the
- SSL connections; bug appeared in 0.3.13.
+ SSL connections; the bug had appeared in 0.3.13.
Thanks to Rob Mueller.
- *) Bugfix: segmentation fault may occurred in at SSL shutdown; bug
- appeared in 0.3.13.
+ *) Bugfix: segmentation fault may occurred in at SSL shutdown; the bug
+ had appeared in 0.3.13.
Changes with nginx 0.3.15 07 Dec 2005
@@ -1655,8 +1681,8 @@ Changes with nginx 0.3.15 07 Dec 2005
Changes with nginx 0.3.14 05 Dec 2005
- *) Bugfix: in the 304 response the body was transferred; bug appeared
- in 0.3.13.
+ *) Bugfix: in the 304 response the body was transferred; the bug had
+ appeared in 0.3.13.
Changes with nginx 0.3.13 05 Dec 2005
@@ -1672,7 +1698,7 @@ Changes with nginx 0.3.13 05 Dec 2005
request body to FastCGI-server via the unix domain socket.
*) Bugfix: the "auth_basic" directive did not disable the
- authorization; bug appeared in 0.3.11.
+ authorization; the bug had appeared in 0.3.11.
Changes with nginx 0.3.12 26 Nov 2005
@@ -1693,7 +1719,7 @@ Changes with nginx 0.3.12 26 Nov 2005
*) Feature: the "proxy_buffering" directive.
*) Bugfix: the changes in accept mutex handling when the "rtsig" method
- was used; bug appeared in 0.3.0.
+ was used; the bug had appeared in 0.3.0.
*) Bugfix: if the client sent the "Transfer-Encoding: chunked" header
line, then nginx returns the 411 error.
@@ -1704,7 +1730,7 @@ Changes with nginx 0.3.12 26 Nov 2005
*) Bugfix: if the "combined" format was explicitly specified in the
"access_log" directive, then the empty lines was written to the log;
- bug appeared in 0.3.8.
+ the bug had appeared in 0.3.8.
*) Bugfix: nginx did not run on the sparc platform under any OS except
Solaris.
@@ -1716,7 +1742,7 @@ Changes with nginx 0.3.12 26 Nov 2005
Changes with nginx 0.3.11 15 Nov 2005
*) Bugfix: nginx did not pass the client request headers and body while
- proxying; bug appeared in 0.3.10.
+ proxying; the bug had appeared in 0.3.10.
Changes with nginx 0.3.10 15 Nov 2005
@@ -1755,7 +1781,7 @@ Changes with nginx 0.3.10 15 Nov 2005
Changes with nginx 0.3.9 10 Nov 2005
*) Bugfix: nginx considered URI as unsafe if two any symbols was
- between two slashes; bug appeared in 0.3.8.
+ between two slashes; the bug had appeared in 0.3.8.
Changes with nginx 0.3.8 09 Nov 2005
@@ -1795,8 +1821,8 @@ Changes with nginx 0.3.8 09 Nov 2005
*) Bugfix: if the request URI was changes by the "rewrite" directive
and the request was proxied in location given by regular expression,
- then the incorrect request was transferred to backend; bug appeared
- in 0.2.6.
+ then the incorrect request was transferred to backend; the bug had
+ appeared in 0.2.6.
*) Bugfix: the "expires" directive did not remove the previous
"Expires" header.
@@ -1817,7 +1843,7 @@ Changes with nginx 0.3.7 27 Oct 2005
*) Feature: the "access_log" supports the "buffer=" parameter.
*) Bugfix: nginx could not be built on platforms different from i386,
- amd64, sparc и ppc; bug appeared in 0.3.2.
+ amd64, sparc, and ppc; the bug had appeared in 0.3.2.
Changes with nginx 0.3.6 24 Oct 2005
@@ -1828,7 +1854,8 @@ Changes with nginx 0.3.6 24 Oct 2005
*) Feature: the "log_format" supports the variables in the $name form.
*) Bugfix: if at least in one server was no the "listen" directive,
- then nginx did not listen on the 80 port; bug appeared in 0.3.3.
+ then nginx did not listen on the 80 port; the bug had appeared in
+ 0.3.3.
*) Bugfix: if the URI part is omitted in "proxy_pass" directive, the
the 80 port was always used.
@@ -1837,10 +1864,10 @@ Changes with nginx 0.3.6 24 Oct 2005
Changes with nginx 0.3.5 21 Oct 2005
*) Bugfix: the segmentation fault may occurred if the IMAP/POP3 login
- was changed by authorization server; bug appeared in 0.2.2.
+ was changed by authorization server; the bug had appeared in 0.2.2.
*) Bugfix: the accept mutex did not work and all connections were
- handled by one process; bug appeared in 0.3.3.
+ handled by one process; the bug had appeared in 0.3.3.
*) Bugfix: the timeout did not work if the "rtsig" method and the
"timer_resolution" directive were used.
@@ -1848,8 +1875,8 @@ Changes with nginx 0.3.5 21 Oct 2005
Changes with nginx 0.3.4 19 Oct 2005
- *) Bugfix: nginx could not be built on Linux 2.4+ and MacOS X; bug
- appeared in 0.3.3.
+ *) Bugfix: nginx could not be built on Linux 2.4+ and MacOS X; the bug
+ had appeared in 0.3.3.
Changes with nginx 0.3.3 19 Oct 2005
@@ -1870,7 +1897,7 @@ Changes with nginx 0.3.3 19 Oct 2005
the CLOSED state.
*) Bugfix: the mime type may be incorrectly set to default value for
- index file with variable in the name; bug appeared in 0.3.0.
+ index file with variable in the name; the bug had appeared in 0.3.0.
*) Feature: the "timer_resolution" directive.
@@ -1902,7 +1929,8 @@ Changes with nginx 0.3.2 12 Oct 2005
Changes with nginx 0.3.1 10 Oct 2005
*) Bugfix: the segmentation fault occurred when the signal queue
- overflowed if the "rtsig" method was used; bug appeared in 0.2.0.
+ overflowed if the "rtsig" method was used; the bug had appeared in
+ 0.2.0.
*) Change: correct handling of the "\\", "\"", "\'", and "\$" pairs in
SSI.
@@ -1936,7 +1964,7 @@ Changes with nginx 0.2.6 05 Oct 2005
*) Bugfix: if the "set" directive set the ngx_http_geo_module variable
in some configuration part, the this variable was not available in
other configuration parts and the "using uninitialized variable"
- error was occurred; bug appeared in 0.2.2.
+ error was occurred; the bug had appeared in 0.2.2.
Changes with nginx 0.2.5 04 Oct 2005
@@ -1958,17 +1986,17 @@ Changes with nginx 0.2.4 03 Oct 2005
*) Feature: the ngx_http_ssi_module supports "$var=text", "$var!=text",
"$var=/text/", and "$var!=/text/" expressions in the "if" command.
- *) Bugfix: in proxying location without trailing slash; bug appeared in
- 0.1.44.
+ *) Bugfix: in proxying location without trailing slash; the bug had
+ appeared in 0.1.44.
*) Bugfix: the segmentation fault may occurred if the "rtsig" method
- was used; bug appeared in 0.2.0.
+ was used; the bug had appeared in 0.2.0.
Changes with nginx 0.2.3 30 Sep 2005
*) Bugfix: nginx could not be built without the --with-debug option;
- bug appeared in 0.2.2.
+ the bug had appeared in 0.2.2.
Changes with nginx 0.2.2 30 Sep 2005
@@ -1997,8 +2025,8 @@ Changes with nginx 0.2.2 30 Sep 2005
Changes with nginx 0.2.1 23 Sep 2005
*) Bugfix: if all backend using in load-balancing failed after one
- error, then nginx may got caught in an endless loop; bug appeared in
- 0.2.0.
+ error, then nginx may got caught in an endless loop; the bug had
+ appeared in 0.2.0.
Changes with nginx 0.2.0 23 Sep 2005
@@ -2076,7 +2104,7 @@ Changes with nginx 0.1.43 30 Aug 2005
*) Bugfix: the segmentation fault occurred or the worker process may
got caught in an endless loop if the proxied or FastCGI server sent
the "Cache-Control" header line and the "expires" directive was
- used; in the proxied mode the bug appeared in 0.1.29.
+ used; in the proxied mode the the bug had appeared in 0.1.29.
Changes with nginx 0.1.42 23 Aug 2005
@@ -2086,7 +2114,7 @@ Changes with nginx 0.1.42 23 Aug 2005
occurred in the ngx_http_proxy_module.
*) Bugfix: the "limit_rate" directive did not work inside the "if"
- block; bug appeared in 0.1.38.
+ block; the bug had appeared in 0.1.38.
Changes with nginx 0.1.41 25 Jul 2005
@@ -2101,7 +2129,7 @@ Changes with nginx 0.1.40 22 Jul 2005
information did not logged in the error log.
*) Bugfix: the "Set-Cookie" header line was not transferred when the
- "X-Accel-Redirect" was used; bug appeared in 0.1.39.
+ "X-Accel-Redirect" was used; the bug had appeared in 0.1.39.
*) Bugfix: the "Content-Disposition" header line was not transferred
when the "X-Accel-Redirect" was used.
@@ -2123,8 +2151,8 @@ Changes with nginx 0.1.39 14 Jul 2005
transferred while the 401 response code redirecting.
*) Bugfix: the ngx_http_proxy_module and ngx_http_fastcgi_module may
- close a connection before anything was transferred to a client; bug
- appeared in 0.1.38.
+ close a connection before anything was transferred to a client; the
+ bug had appeared in 0.1.38.
*) Workaround: the Linux glibc crypt_r() initialization bug.
@@ -2133,17 +2161,17 @@ Changes with nginx 0.1.39 14 Jul 2005
*) Bugfix: if the backend response had the "Location" header line and
nginx should not rewrite this line, then the 500 code response body
- was transferred; bug appeared in 0.1.29.
+ was transferred; the bug had appeared in 0.1.29.
*) Bugfix: some directives of the ngx_http_proxy_module and
ngx_http_fastcgi_module were not inherited from the server to the
- location level; bug appeared in 0.1.29.
+ location level; the bug had appeared in 0.1.29.
*) Bugfix: the ngx_http_ssl_module did not support the certificate
chain.
*) Bugfix: the ngx_http_autoindex_module did not show correctly the
- long file names; bug appeared in 0.1.38.
+ long file names; the bug had appeared in 0.1.38.
*) Bugfixes in IMAP/POP3 proxy in interaction with a backend at the
login state.
@@ -2171,8 +2199,8 @@ Changes with nginx 0.1.38 08 Jul 2005
than one remote subrequest.
*) Bugfix: nginx treated the backend response as invalid if the status
- line in the header was transferred in two packets; bug appeared in
- 0.1.29.
+ line in the header was transferred in two packets; the bug had
+ appeared in 0.1.29.
*) Feature: the "ssi_types" directive.
@@ -2226,7 +2254,7 @@ Changes with nginx 0.1.35 07 Jun 2005
*) Feature: the "port_in_redirect" directive.
*) Bugfix: the segmentation fault was occurred if the backend response
- header was in several packets; bug appeared in 0.1.29.
+ header was in several packets; the bug had appeared in 0.1.29.
*) Bugfix: if more than 10 servers were configured or some server did
not use the "listen" directive, then the segmentation fault was
@@ -2236,7 +2264,8 @@ Changes with nginx 0.1.35 07 Jun 2005
bigger than the temporary file.
*) Bugfix: nginx returned the 400 response on requests like
- "GET http://www.domain.com/uri HTTP/1.0"; bug appeared in 0.1.28.
+ "GET http://www.domain.com/uri HTTP/1.0"; the bug had appeared in
+ 0.1.28.
Changes with nginx 0.1.34 26 May 2005
@@ -2256,7 +2285,7 @@ Changes with nginx 0.1.34 26 May 2005
Changes with nginx 0.1.33 23 May 2005
*) Bugfix: nginx could not be built with the --without-pcre parameter;
- bug appeared in 0.1.29.
+ the bug had appeared in 0.1.29.
*) Bugfix: 3, 4, 7, and 8 the "proxy_set_header" directives in one
level cause the bus fault on start up.
@@ -2270,7 +2299,7 @@ Changes with nginx 0.1.33 23 May 2005
Changes with nginx 0.1.32 19 May 2005
*) Bugfix: the arguments were omitted in the redirects, issued by the
- "rewrite" directive; bug appeared in 0.1.29.
+ "rewrite" directive; the bug had appeared in 0.1.29.
*) Feature: the "if" directive supports the captures in regular
expressions.
@@ -2291,7 +2320,7 @@ Changes with nginx 0.1.31 16 May 2005
*) Bugfix: errors while using SSI and gzipping.
*) Bugfix: the redirect with the 301 code was transferred without
- response body; bug appeared in 0.1.30.
+ response body; the bug had appeared in 0.1.30.
Changes with nginx 0.1.30 14 May 2005
@@ -2303,7 +2332,8 @@ Changes with nginx 0.1.30 14 May 2005
*) Bugfix: if the length of the response part received at once from
proxied or FastCGI server was equal to 500, then nginx returns the
- 500 response code; in proxy mode the bug appeared in 0.1.29 only.
+ 500 response code; in proxy mode the the bug had appeared in 0.1.29
+ only.
*) Bugfix: nginx did not consider the directives with 8 or 9 parameters
as invalid.
@@ -2382,7 +2412,7 @@ Changes with nginx 0.1.29 12 May 2005
returned the 408 response.
*) Bugfix: the segmentation fault was occurred if the backend sent an
- invalid line in response header; bug appeared in 0.1.26.
+ invalid line in response header; the bug had appeared in 0.1.26.
*) Bugfix: the segmentation fault may occurred in FastCGI fault
tolerance configuration.
@@ -2502,7 +2532,7 @@ Changes with nginx 0.1.23 01 Mar 2005
server name of the "server_name" directive.
*) Bugfix: nginx could not be built on platforms different from i386,
- amd64, sparc и ppc; bug appeared in 0.1.22.
+ amd64, sparc, and ppc; the bug had appeared in 0.1.22.
*) Bugfix: the ngx_http_autoindex_module now shows the information not
about the symlink, but about file or directory it points to.
@@ -2517,7 +2547,7 @@ Changes with nginx 0.1.22 22 Feb 2005
connections statistics if the proxying or FastCGI server were used.
*) Bugfix: the installation paths were incorrectly quoted on Linux and
- Solaris; bug appeared in 0.1.21.
+ Solaris; the bug had appeared in 0.1.21.
Changes with nginx 0.1.21 22 Feb 2005
@@ -2602,7 +2632,8 @@ Changes with nginx 0.1.17 03 Feb 2005
static page, then the segmentation fault occurred.
*) Bugfix: if in a proxied "Location" header was a relative URL, then a
- host name and a slash were added to them; bug appeared in 0.1.14.
+ host name and a slash were added to them; the bug had appeared in
+ 0.1.14.
*) Bugfix: the system error message was not logged on Linux.
@@ -2627,7 +2658,7 @@ Changes with nginx 0.1.16 25 Jan 2005
*) Feature: the rewrite directive supports the arguments rewriting.
*) Bugfix: the response code 400 was returned for the POST request with
- the "Content-Length: 0" header; bug appeared in 0.1.14.
+ the "Content-Length: 0" header; the bug had appeared in 0.1.14.
Changes with nginx 0.1.15 19 Jan 2005
@@ -2648,8 +2679,8 @@ Changes with nginx 0.1.15 19 Jan 2005
to use the regular expressions in locations.
*) Bugfix: the directive "proxy_preserve_host on" adds port 80 to the
- "Host" headers, if upstream listen on port 80; bug appeared in
- 0.1.14.
+ "Host" headers, if upstream listen on port 80; the bug had appeared
+ in 0.1.14.
*) Bugfix: the same paths in autoconfiguration parameters
--http-client-body-temp-path=PATH and --http-proxy-temp-path=PATH,
@@ -2675,7 +2706,8 @@ Changes with nginx 0.1.14 18 Jan 2005
fastcgi_max_temp_file_size, fastcgi_temp_file_write_size,
fastcgi_next_upstream, and fastcgi_x_powered_by.
- *) Bugfix: the "[alert] zero size buf" error; bug appeared in 0.1.3.
+ *) Bugfix: the "[alert] zero size buf" error; the bug had appeared in
+ 0.1.3.
*) Change: the URI must be specified after the host name in the
proxy_pass directive.
@@ -2760,7 +2792,7 @@ Changes with nginx 0.1.10 26 Nov 2004
*) Bugfix: if the request without arguments contains "//", "/./",
"/../" or "%XX" then the lost character in the request line was
- lost; bug appeared in 0.1.9.
+ lost; the bug had appeared in 0.1.9.
*) Bugfix: the fix in 0.1.9 for the files bigger than 2G on Linux did
not work.
@@ -2778,7 +2810,8 @@ Changes with nginx 0.1.9 25 Nov 2004
does not support sendfile64().
*) Bugfix: while the build configuration on Linux the
- --with-poll_module parameter was required; bug appeared in 0.1.8.
+ --with-poll_module parameter was required; the bug had appeared in
+ 0.1.8.
Changes with nginx 0.1.8 20 Nov 2004
@@ -2794,7 +2827,7 @@ Changes with nginx 0.1.8 20 Nov 2004
Changes with nginx 0.1.7 12 Nov 2004
*) Bugfix: on FreeBSD the segmentation fault may occur if the size of
- the transferred file was changed; bug appeared in 0.1.5.
+ the transferred file was changed; the bug had appeared in 0.1.5.
Changes with nginx 0.1.6 11 Nov 2004
@@ -2853,13 +2886,13 @@ Changes with nginx 0.1.2 21 Oct 2004
*) Bugfix: the portability improvements.
*) Bugfix: if configuration file was set in command line, the
- reconfiguration was impossible; bug appeared in 0.1.1.
+ reconfiguration was impossible; the bug had appeared in 0.1.1.
*) Bugfix: proxy module may get caught in an endless loop when sendfile
is not used.
*) Bugfix: with sendfile the response was not recoded according to the
- charset module directives; bug appeared in 0.1.1.
+ charset module directives; the bug had appeared in 0.1.1.
*) Bugfix: very seldom bug in the kqueue processing.
diff --git a/CHANGES.ru b/CHANGES.ru
index 707748d49..d6882379d 100644
--- a/CHANGES.ru
+++ b/CHANGES.ru
@@ -1,4 +1,25 @@
+Изменения в nginx 0.5.37 07.07.2008
+
+ *) Исправление: при совместном использовании sub_filter и SSI ответы
+ могли передаваться неверно.
+
+ *) Исправление: большие включения в SSI могли передавались не полностью.
+
+ *) Исправление: рабочие процессы могли не реагировать на сигналы
+ переконфигурации и ротации логов.
+
+ *) Исправление: nginx не собирался на последних Fedora 9 Linux.
+ Спасибо Roxis.
+
+ *) Исправление: при использовании keepalive на Linux в рабочем процессе
+ мог произойти segmentation fault.
+
+ *) Исправление: во время переконфигурации на некоторых 64-битном
+ платформах в лог записывался alert "sendmsg() failed (9: Bad file
+ descriptor)".
+
+
Изменения в nginx 0.5.36 04.05.2008
*) Исправление: директива sub_filter могла вставлять заменяемый текст в
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 50e943c8c..bba9e751b 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -8,7 +8,7 @@
#define _NGINX_H_INCLUDED_
-#define NGINX_VERSION "0.5.36"
+#define NGINX_VERSION "0.5.37"
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
diff --git a/src/http/modules/ngx_http_ssi_filter_module.c b/src/http/modules/ngx_http_ssi_filter_module.c
index 5f01bb522..2a0e99fa4 100644
--- a/src/http/modules/ngx_http_ssi_filter_module.c
+++ b/src/http/modules/ngx_http_ssi_filter_module.c
@@ -558,8 +558,9 @@ ngx_http_ssi_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
if (b->in_file) {
if (slcf->min_file_chunk < (size_t) (b->last - b->pos))
{
- b->file_last = b->file_pos + (b->last - b->start);
- b->file_pos += b->pos - b->start;
+ b->file_last = b->file_pos
+ + (b->last - ctx->buf->pos);
+ b->file_pos += b->pos - ctx->buf->pos;
} else {
b->in_file = 0;
diff --git a/src/http/modules/ngx_http_sub_filter_module.c b/src/http/modules/ngx_http_sub_filter_module.c
index 663a9f5b7..9b4df2e7a 100644
--- a/src/http/modules/ngx_http_sub_filter_module.c
+++ b/src/http/modules/ngx_http_sub_filter_module.c
@@ -322,8 +322,8 @@ ngx_http_sub_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
b->recycled = 0;
if (b->in_file) {
- b->file_last = b->file_pos + (b->last - b->start);
- b->file_pos += b->pos - b->start;
+ b->file_last = b->file_pos + (b->last - ctx->buf->pos);
+ b->file_pos += b->pos - ctx->buf->pos;
}
cl->next = NULL;
diff --git a/src/http/modules/perl/nginx.pm b/src/http/modules/perl/nginx.pm
index bd0e8c0e4..c68b479b8 100644
--- a/src/http/modules/perl/nginx.pm
+++ b/src/http/modules/perl/nginx.pm
@@ -47,7 +47,7 @@ our @EXPORT = qw(
HTTP_INSUFFICIENT_STORAGE
);
-our $VERSION = '0.5.36';
+our $VERSION = '0.5.37';
require XSLoader;
XSLoader::load('nginx', $VERSION);
diff --git a/src/http/ngx_http_postpone_filter_module.c b/src/http/ngx_http_postpone_filter_module.c
index 32621664c..ca5cb9e63 100644
--- a/src/http/ngx_http_postpone_filter_module.c
+++ b/src/http/ngx_http_postpone_filter_module.c
@@ -168,7 +168,7 @@ ngx_http_postpone_filter_output_postponed_request(ngx_http_request_t *r)
pr = r->postponed;
if (pr == NULL) {
- return NGX_OK;
+ break;
}
if (pr->request) {
@@ -196,7 +196,7 @@ ngx_http_postpone_filter_output_postponed_request(ngx_http_request_t *r)
}
if (pr == NULL) {
- return NGX_OK;
+ break;
}
out = pr->out;
@@ -215,6 +215,17 @@ ngx_http_postpone_filter_output_postponed_request(ngx_http_request_t *r)
r->postponed = r->postponed->next;
}
+
+ if (r->out) {
+ ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http postpone filter out again \"%V?%V\"",
+ &r->uri, &r->args);
+
+ r->connection->data = r;
+ return NGX_AGAIN;
+ }
+
+ return NGX_OK;
}
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index ab827a648..b77814661 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -2046,7 +2046,8 @@ ngx_http_set_keepalive(ngx_http_request_t *r)
hc->pipeline = 1;
c->log->action = "reading client pipelined request line";
- ngx_http_init_request(rev);
+ rev->handler = ngx_http_init_request;
+ ngx_post_event(rev, &ngx_posted_events);
return;
}
@@ -2156,7 +2157,7 @@ ngx_http_set_keepalive(ngx_http_request_t *r)
c->idle = 1;
if (rev->ready) {
- ngx_http_keepalive_handler(rev);
+ ngx_post_event(rev, &ngx_posted_events);
}
}
diff --git a/src/os/unix/ngx_channel.c b/src/os/unix/ngx_channel.c
index 62ea7cc30..f0f337d06 100644
--- a/src/os/unix/ngx_channel.c
+++ b/src/os/unix/ngx_channel.c
@@ -33,7 +33,7 @@ ngx_write_channel(ngx_socket_t s, ngx_channel_t *ch, size_t size,
msg.msg_control = (caddr_t) &cmsg;
msg.msg_controllen = sizeof(cmsg);
- cmsg.cm.cmsg_len = sizeof(cmsg);
+ cmsg.cm.cmsg_len = CMSG_LEN(sizeof(int));
cmsg.cm.cmsg_level = SOL_SOCKET;
cmsg.cm.cmsg_type = SCM_RIGHTS;
*(int *) CMSG_DATA(&cmsg.cm) = ch->fd;
@@ -138,7 +138,7 @@ ngx_read_channel(ngx_socket_t s, ngx_channel_t *ch, size_t size, ngx_log_t *log)
if (ch->command == NGX_CMD_OPEN_CHANNEL) {
- if (cmsg.cm.cmsg_len < (socklen_t) sizeof(cmsg)) {
+ if (cmsg.cm.cmsg_len < (socklen_t) CMSG_LEN(sizeof(int))) {
ngx_log_error(NGX_LOG_ALERT, log, 0,
"recvmsg() returned too small ancillary data");
return NGX_ERROR;
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
index 818e230ba..24dcdcb46 100644
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -48,11 +48,16 @@
#if __FreeBSD_version < 400017
-/* FreeBSD 3.x has no CMSG_SPACE() at all and has the broken CMSG_DATA() */
+/*
+ * FreeBSD 3.x has no CMSG_SPACE() and CMSG_LEN() and has the broken CMSG_DATA()
+ */
#undef CMSG_SPACE
#define CMSG_SPACE(l) (ALIGN(sizeof(struct cmsghdr)) + ALIGN(l))
+#undef CMSG_LEN
+#define CMSG_LEN(l) (ALIGN(sizeof(struct cmsghdr)) + (l))
+
#undef CMSG_DATA
#define CMSG_DATA(cmsg) ((u_char *)(cmsg) + ALIGN(sizeof(struct cmsghdr)))
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index c584ff885..b8e7159d0 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -47,6 +47,7 @@
#include <time.h> /* tzset() */
#include <malloc.h> /* memalign() */
+#include <limits.h> /* IOV_MAX */
#include <sys/ioctl.h>
#include <sys/sysctl.h>
#include <crypt.h>
diff --git a/src/os/unix/ngx_posix_config.h b/src/os/unix/ngx_posix_config.h
index 49c3c4d6c..37176e0d2 100644
--- a/src/os/unix/ngx_posix_config.h
+++ b/src/os/unix/ngx_posix_config.h
@@ -110,11 +110,16 @@
#include <sys/param.h> /* ALIGN() */
-/* FreeBSD 3.x has no CMSG_SPACE() at all and has the broken CMSG_DATA() */
+/*
+ * FreeBSD 3.x has no CMSG_SPACE() and CMSG_LEN() and has the broken CMSG_DATA()
+ */
#undef CMSG_SPACE
#define CMSG_SPACE(l) (ALIGN(sizeof(struct cmsghdr)) + ALIGN(l))
+#undef CMSG_LEN
+#define CMSG_LEN(l) (ALIGN(sizeof(struct cmsghdr)) + (l))
+
#undef CMSG_DATA
#define CMSG_DATA(cmsg) ((u_char *)(cmsg) + ALIGN(sizeof(struct cmsghdr)))
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
index 631597ef4..338987fb0 100644
--- a/src/os/unix/ngx_process_cycle.c
+++ b/src/os/unix/ngx_process_cycle.c
@@ -1055,65 +1055,74 @@ ngx_channel_handler(ngx_event_t *ev)
ngx_log_debug0(NGX_LOG_DEBUG_CORE, ev->log, 0, "channel handler");
- n = ngx_read_channel(c->fd, &ch, sizeof(ngx_channel_t), ev->log);
+ for ( ;; ) {
- ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, "channel: %i", n);
+ n = ngx_read_channel(c->fd, &ch, sizeof(ngx_channel_t), ev->log);
- if (n == NGX_ERROR) {
- ngx_close_connection(c);
- return;
- }
+ ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, "channel: %i", n);
+
+ if (n == NGX_ERROR) {
+
+ if (ngx_event_flags & NGX_USE_EPOLL_EVENT) {
+ ngx_del_conn(c, 0);
+ }
- if (ngx_event_flags & NGX_USE_EVENTPORT_EVENT) {
- if (ngx_add_event(ev, NGX_READ_EVENT, 0) == NGX_ERROR) {
+ ngx_close_connection(c);
return;
}
- }
- if (n == NGX_AGAIN) {
- return;
- }
+ if (ngx_event_flags & NGX_USE_EVENTPORT_EVENT) {
+ if (ngx_add_event(ev, NGX_READ_EVENT, 0) == NGX_ERROR) {
+ return;
+ }
+ }
- ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,
- "channel command: %d", ch.command);
+ if (n == NGX_AGAIN) {
+ return;
+ }
- switch (ch.command) {
+ ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,
+ "channel command: %d", ch.command);
- case NGX_CMD_QUIT:
- ngx_quit = 1;
- break;
+ switch (ch.command) {
- case NGX_CMD_TERMINATE:
- ngx_terminate = 1;
- break;
+ case NGX_CMD_QUIT:
+ ngx_quit = 1;
+ break;
- case NGX_CMD_REOPEN:
- ngx_reopen = 1;
- break;
+ case NGX_CMD_TERMINATE:
+ ngx_terminate = 1;
+ break;
- case NGX_CMD_OPEN_CHANNEL:
+ case NGX_CMD_REOPEN:
+ ngx_reopen = 1;
+ break;
- ngx_log_debug3(NGX_LOG_DEBUG_CORE, ev->log, 0,
- "get channel s:%i pid:%P fd:%d", ch.slot, ch.pid, ch.fd);
+ case NGX_CMD_OPEN_CHANNEL:
- ngx_processes[ch.slot].pid = ch.pid;
- ngx_processes[ch.slot].channel[0] = ch.fd;
- break;
+ ngx_log_debug3(NGX_LOG_DEBUG_CORE, ev->log, 0,
+ "get channel s:%i pid:%P fd:%d",
+ ch.slot, ch.pid, ch.fd);
- case NGX_CMD_CLOSE_CHANNEL:
+ ngx_processes[ch.slot].pid = ch.pid;
+ ngx_processes[ch.slot].channel[0] = ch.fd;
+ break;
- ngx_log_debug4(NGX_LOG_DEBUG_CORE, ev->log, 0,
- "close channel s:%i pid:%P our:%P fd:%d",
- ch.slot, ch.pid, ngx_processes[ch.slot].pid,
- ngx_processes[ch.slot].channel[0]);
+ case NGX_CMD_CLOSE_CHANNEL:
- if (close(ngx_processes[ch.slot].channel[0]) == -1) {
- ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno,
- "close() channel failed");
- }
+ ngx_log_debug4(NGX_LOG_DEBUG_CORE, ev->log, 0,
+ "close channel s:%i pid:%P our:%P fd:%d",
+ ch.slot, ch.pid, ngx_processes[ch.slot].pid,
+ ngx_processes[ch.slot].channel[0]);
- ngx_processes[ch.slot].channel[0] = -1;
- break;
+ if (close(ngx_processes[ch.slot].channel[0]) == -1) {
+ ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno,
+ "close() channel failed");
+ }
+
+ ngx_processes[ch.slot].channel[0] = -1;
+ break;
+ }
}
}