| Commit message (Collapse) | Author | Age |
... | |
| |
|
|
|
|
|
| |
A failure to detect duplicate "keepalive" directive resulted in
stack exhaustion.
|
| |
|
|
|
|
|
|
| |
Previously, "default" was equivalent to specifying 0.0.0.0/0, now
it's equivalent to specifying both 0.0.0.0/0 and ::/0 (if support
for IPv6 is enabled) with the same value.
|
| |
|
|
|
|
| |
The "ranges" mode is still limited to IPv4 only.
|
|
|
|
| |
Based on patch by Thomas Chen (ticket #257).
|
| |
|
| |
|
|
|
|
| |
Note: this requires zlib version 1.2.0.4 or above to work.
|
| |
|
|
|
|
|
|
| |
The code refactored in a way to call custom handler that can do appropriate
cleanup work (if any), like flushing buffers, finishing compress streams,
finalizing connections to log daemon, etc..
|
|
|
|
|
| |
Previously a new buffer was allocated for every "access_log" directive with the
same file path and "buffer=" parameters, while only one buffer per file is used.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The crypt_r() function returns NULL on errors, check it explicitly instead
of assuming errno will remain 0 if there are no errors (per POSIX, the
setting of errno after a successful call to a function is unspecified
unless the description of that function specifies that errno shall not
be modified).
Additionally, dropped unneeded ngx_set_errno(0) and fixed error handling
of memory allocation after normal crypt(), which was inapropriate and
resulted in null pointer dereference on allocation failures.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Configurations like
location /i/ {
image_filter resize 200 200;
image_filter rotate 180;
location /i/foo/ {
image_filter resize 200 200;
}
}
resulted in rotation incorrectly applied in the location /i/foo, without
any way to clear it. Fix is to handle conf->angle/conf->acv consistently
with other filter variables and do not try to inherit them if there are
transformations defined for current location.
|
|
|
|
|
| |
If 0.0.0.0/32 entry was present and there was no explicit "default",
we failed to add an empty string as a default value.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The image_filter_jpeg_quality, image_filter_sharpen and "image_filter rotate"
were inherited incorrectly if a directive with variables was defined, and
then redefined to a literal value, i.e. in configurations like
image_filter_jpeg_quality $arg_q;
location / {
image_filter_jpeg_quality 50;
}
Patch by Ian Babrou, with minor changes.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Patch by Igor Sysoev.
|
|
|
|
| |
Added variable name syntax checks to "geo" and "map" directives.
|
|
|
|
|
|
|
|
|
| |
This includes "debug_connection", upstreams, "proxy_pass", etc.
(ticket #92)
To preserve compatibility, "listen" specified with a domain name
selects the first IPv4 address, if available. If not available,
the first IPv6 address will be used (ticket #186).
|
|
|
|
|
|
| |
The URL parsing code is not expected to initialize port from default port
when in "no_resolve" mode. This got broken in r4671 for the case of IPv6
literals.
|
|
|
|
|
| |
Except for the "listen" directive, "*" specified as a hostname is
no longer treated specially.
|
|
|
|
|
|
|
|
|
| |
The following configuration returned an empty value for $geo:
geo $geo {
ranges;
default default;
}
|
| |
|
|
|
|
|
|
|
|
|
| |
The ngx_write_fd() and ngx_read_fd() functions return -1 in case of error,
so the incorrect comparison with NGX_FILE_ERROR (which is 0 on windows
platforms) might result in inaccurate error message in the error log.
Also the ngx_errno global variable is being set only if the returned value
is -1.
|
|
|
|
|
|
|
| |
An incorrect memLevel (lower than 1) might be passed to deflateInit2() if the
"gzip_hash" directive is set to a value less than the value of "gzip_window"
directive. This resulted in "deflateInit2() failed: -2" alert and an empty
reply.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Configuration like
location / {
set $true 1;
if ($true) {
proxy_pass http://backend;
}
if ($true) {
# nothing
}
}
resulted in segmentation fault due to NULL pointer dereference as the
upstream configuration wasn't initialized in an implicit location created
by the last if(), but the r->content_handler was set due to first if().
Instead of committing a suicide by dereferencing a NULL pointer, return
500 (Internal Server Error) in such cases, i.e. if uscf is NULL. Better
fix would be to avoid such cases by fixing the "if" directive handling,
but it's out of scope of this patch.
Prodded by Piotr Sikora.
|
|
|
|
| |
and "perl_set" directives.
|
|
|
|
| |
Requested by Igor Sysoev.
|
|
|
|
| |
Patch by Alexey Antropov.
|
| |
|
|
|
|
|
| |
This makes conversion from strings to complex values possible
without the loss of functionality.
|
|
|
|
|
| |
If XSLT transformation failed and error 500 was handled in the same
location, an infinite loop occured that exhausted the stack.
|
| |
|
|
|
|
|
| |
The ngx_sock_ntop() function, when told to print both address and port,
prints IPv6 address in square brackets, followed by colon and port.
|
|
|
|
|
|
|
|
|
|
|
| |
This will result in alphabetical sorting of included files if
the "include" directive with wildcards is used.
Note that the behaviour is now different from that on Windows, where
alphabetical sorting is not guaranteed for FindFirsFile()/FindNextFile()
(used to be alphabetical on NTFS, but not on FAT).
Approved by Igor Sysoev, prodded by many.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Catched by dav_chunked.t on Solaris. In released versions this might
potentially result in corruption of complex protocol responses if they
were written to disk and there were more distinct buffers than IOV_MAX
in a single write.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If write events are not blocked, an extra write event might happen for
various reasons (e.g. as a result of a http pipelining), resulting in
incorrect body being passed to a post handler.
The problem manifested itself with the dav module only, as this is
the only module which reads the body from a content phase handler (in
contrast to exclusive content handlers like proxy). Additionally, dav
module used to dump core in such situations due to ticket #238.
See reports here:
http://mailman.nginx.org/pipermail/nginx-devel/2012-November/002981.html
http://serverfault.com/questions/449195/nginx-webdav-server-with-auth-request
|
|
|
|
|
|
|
| |
Negative rb->rest can't happen with current code, but it's good to have
it handled anyway.
Found by Coverity (CID 744846, 744847, 744848).
|
|
|
|
|
|
|
|
|
|
|
| |
While discarding chunked request body in some cases after detecting
request body corruption no error was returned, while it was possible
to correctly return 400 Bad Request. If error is detected too late,
make sure to properly close connection.
Additionally, in ngx_http_special_response_handler() don't return body
of 500 Internal Server Error to a client if ngx_http_discard_request_body()
fails, but disable keepalive and continue.
|
|
|
|
|
|
| |
Even if there is no preread data, make sure to always call
ngx_http_discard_request_body_filter() in case of chunked request
body to initialize r->headers_in.content_length_n for later use.
|
|
|
|
|
|
|
| |
nginx doesn't allow the same shared memory zone to be used for different
purposes, but failed to check this on reconfiguration. If a shared memory
zone was used for another purpose in the new configuration, nginx attempted
to reuse it and crashed.
|