summaryrefslogtreecommitdiffhomepage
path: root/src (follow)
AgeCommit message (Collapse)AuthorFilesLines
2013-02-01FastCGI: proper handling of split fastcgi end request.Maxim Dounin1-7/+37
If fastcgi end request record was split between several network packets, with fastcgi_keep_conn it was possible that connection was saved in incorrect state (e.g. with padding bytes not yet read).
2013-02-01FastCGI: unconditional state transitions.Maxim Dounin1-49/+8
Checks for f->padding before state transitions make code hard to follow, remove them and make sure we always do another loop iteration after f->state is set to ngx_http_fastcgi_st_padding.
2013-02-01FastCGI: fixed wrong connection close with fastcgi_keep_conn.Maxim Dounin1-4/+0
With fastcgi_keep_conn it was possible that connection was closed after FCGI_STDERR record with zero padding and without any further data read yet. This happended as f->state was set to ngx_http_fastcgi_st_padding and then "break" happened, resulting in p->length being set to f->padding, i.e. 0 (which in turn resulted in connection close). Fix is to make sure we continue the loop after f->state is set.
2013-02-01Request body: fixed client_body_in_file_only.Maxim Dounin1-1/+17
After introduction of chunked request body reading support in 1.3.9 (r4931), the rb->bufs wasn't set if request body was fully preread while calling the ngx_http_read_client_request_body() function. Reported by Yichun Zhang (agentzh).
2013-02-01SSL: fixed ngx_ssl_handshake() with level-triggered event methods.Maxim Dounin1-0/+8
Missing calls to ngx_handle_write_event() and ngx_handle_read_event() resulted in a CPU hog during SSL handshake if an level-triggered event method (e.g. select) was used.
2013-01-28SSL: take into account data in the buffer while limiting output.Valentin Bartenev1-1/+1
In some rare cases this can result in a more smooth sending rate.
2013-01-28SSL: avoid calling SSL_write() with zero data size.Valentin Bartenev1-0/+6
According to documentation, calling SSL_write() with num=0 bytes to be sent results in undefined behavior. We don't currently call ngx_ssl_send_chain() with empty chain and buffer. This check handles the case of a chain with total data size that is a multiple of NGX_SSL_BUFSIZE, and with the special buffer at the end. In practice such cases resulted in premature connection close and critical error "SSL_write() failed (SSL:)" in the error log.
2013-01-28SSL: calculation of buffer size moved closer to its usage.Valentin Bartenev1-2/+2
No functional changes.
2013-01-28SSL: preservation of flush flag for buffered data.Valentin Bartenev1-5/+5
Previously, if SSL buffer was not sent we lost information that the data must be flushed.
2013-01-28SSL: resetting of flush flag after the data was written.Valentin Bartenev1-0/+2
There is no need to flush next chunk of data if it does not contain a buffer with the flush or last_buf flags set.
2013-01-28SSL: removed conditions that always hold true.Valentin Bartenev1-5/+3
2013-01-28Secure_link: fixed configuration inheritance.Ruslan Ermilov1-2/+15
The "secure_link_secret" directive was always inherited from the outer configuration level even when "secure_link" and "secure_link_md5" were specified on the inner level.
2013-01-25Events: fixed null pointer dereference with resolver and poll.Ruslan Ermilov1-2/+2
A POLLERR signalled by poll() without POLLIN/POLLOUT, as seen on Linux, would generate both read and write events, but there's no write event handler for resolver events. A fix is to only call event handler of an active event.
2013-01-24GeoIP: IPv6 support.Ruslan Ermilov1-13/+145
When using IPv6 databases, IPv4 addresses are looked up as IPv4-mapped IPv6 addresses. Mostly based on a patch by Gregor Kališnik (ticket #250).
2013-01-22Proxy: fixed proxy_method to always add space.Maxim Dounin1-4/+5
Before the patch if proxy_method was specified at http{} level the code to add trailing space wasn't executed, resulting in incorrect requests to upstream.
2013-01-21Variables $pipe, $request_length, $time_iso8601, and $time_local.Ruslan Ermilov1-0/+102
Log module counterparts are preserved for efficiency. Based on patch by Kiril Kalchev.
2013-01-17Version bump.Ruslan Ermilov2-3/+3
2013-01-16Fixed and improved the "*_bind" directives of proxying modules.Ruslan Ermilov8-12/+131
The "proxy_bind", "fastcgi_bind", "uwsgi_bind", "scgi_bind" and "memcached_bind" directives are now inherited; inherited value can be reset by the "off" parameter. Duplicate directives are now detected. Parameter value can now contain variables.
2013-01-10Fixed "proxy_pass" with IP address and no port (ticket #276).Ruslan Ermilov4-15/+14
Upstreams created by "proxy_pass" with IP address and no port were broken in 1.3.10, by not initializing port in u->sockaddr. API change: ngx_parse_url() was modified to always initialize port (in u->sockaddr and in u->port), even for the u->no_resolve case; ngx_http_upstream() and ngx_http_upstream_add() were adopted.
2013-01-09SSL: speedup loading of configs with many ssl servers.Maxim Dounin1-2/+2
The patch saves one EC_KEY_generate_key() call per server{} block by informing OpenSSL about SSL_OP_SINGLE_ECDH_USE we are going to use before the SSL_CTX_set_tmp_ecdh() call. For a configuration file with 10k simple server{} blocks with SSL enabled this change reduces startup time from 18s to 5s on a slow test box here.
2013-01-08Events: added check for duplicate "events" directive.Valentin Bartenev1-0/+4
2013-01-08The data pointer in ngx_open_file_t objects must be initialized.Valentin Bartenev1-0/+1
Uninitialized pointer may result in arbitrary segfaults if access_log is used without buffer and without variables in file path. Patch by Tatsuhiko Kubo (ticket #268).
2012-12-27Geo: improved code readability.Ruslan Ermilov1-54/+61
2012-12-26Upstream keepalive: detect duplicate "keepalive" directive.Ruslan Ermilov1-0/+4
A failure to detect duplicate "keepalive" directive resulted in stack exhaustion.
2012-12-26Version bump.Ruslan Ermilov2-3/+3
2012-12-26Geo: made "default" affect both IPv4 and IPv6 when using prefixes.Ruslan Ermilov1-48/+77
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.
2012-12-25Geo: properly initialize ngx_cidr_t when dealing with "default".Ruslan Ermilov1-1/+1
2012-12-25Geo: IPv6 support.Ruslan Ermilov3-79/+442
The "ranges" mode is still limited to IPv4 only.
2012-12-25Upstream: fixed state resetting when switching to backup servers.Valentin Bartenev2-2/+6
Based on patch by Thomas Chen (ticket #257).
2012-12-24Fixed HEAD requests handling when proxying is used (closes #261).Valentin Bartenev2-1/+2
2012-12-24Trailing whitespace fix.Ruslan Ermilov1-2/+2
2012-12-23Access log: the "gzip" parameter of the "access_log" directive.Valentin Bartenev1-5/+213
Note: this requires zlib version 1.2.0.4 or above to work.
2012-12-23Access log: the "flush" parameter of the "access_log" directive.Valentin Bartenev1-23/+97
2012-12-23Reopening log files code moved to a separate function.Valentin Bartenev4-67/+77
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..
2012-12-23Access log: fixed redundant buffer reallocation.Valentin Bartenev1-5/+9
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.
2012-12-22Properly initialize "struct in6_addr" with zeroes.Ruslan Ermilov1-1/+1
2012-12-21Core: crypt_r() error handling fixed.Maxim Dounin1-14/+13
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.
2012-12-21Image filter: fixed image_filter rotate inheritance.Maxim Dounin1-9/+15
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.
2012-12-21Geo: ensure that default entry is always present.Ruslan Ermilov1-4/+2
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.
2012-12-21There's no need to normalize address returned by ngx_ptocidr().Ruslan Ermilov1-1/+1
2012-12-20Image filter: configuration inheritance fixes.Maxim Dounin1-10/+18
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.
2012-12-20Brought the link to ngx_http_perl_module documentation up to date.Ruslan Ermilov1-1/+1
2012-12-20Fixed return type of internal function that allocates radix tree nodes.Ruslan Ermilov1-5/+5
2012-12-19Let "add_header" affect 201 responses (ticket #125).Ruslan Ermilov1-0/+1
2012-12-19Slightly optimized code that handles special headers in "add_header".Ruslan Ermilov1-29/+21
2012-12-18Avoid sending "100 Continue" on 413 Request Entity Too Large.Maxim Dounin1-0/+1
Patch by Igor Sysoev.
2012-12-17Added checks that disallow adding a variable with an empty name.Ruslan Ermilov7-6/+32
Added variable name syntax checks to "geo" and "map" directives.
2012-12-17Implemented IPv6 support for URLs specified using domain names.Ruslan Ermilov4-31/+212
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).
2012-12-17Fixed URL parsing code.Ruslan Ermilov1-5/+5
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.
2012-12-17Simplified URL parsing code.Ruslan Ermilov1-30/+26
Except for the "listen" directive, "*" specified as a hostname is no longer treated specially.