summaryrefslogtreecommitdiffhomepage
path: root/src/http (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2014-09-13Access log: fixed the "if=" parameter with buffering (ticket #625).Valentin Bartenev1-21/+20
It might not work if there were more than one "access_log" directives pointed to the same file and duplicate buffer parameters.
2014-09-12Upstream: limited next_upstream time and tries (ticket #544).Roman Arutyunyan7-2/+126
The new directives {proxy,fastcgi,scgi,uwsgi,memcached}_next_upstream_tries and {proxy,fastcgi,scgi,uwsgi,memcached}_next_upstream_timeout limit the number of upstreams tried and the maximum time spent for these tries when searching for a valid upstream.
2014-09-12Upstream: included backup peers into peer.tries.Roman Arutyunyan2-12/+6
Since peer.tries is never reset it can now be limited if required.
2014-09-11Upstream keepalive: removed "single" parameter remnants.Maxim Dounin1-20/+1
The "single" parameter is deprecated and ignored since 5b5c07dee156 (1.3.2).
2014-09-11Added warning about unset cache keys.Maxim Dounin3-0/+15
In fastcgi, scgi and uwsgi modules there are no default cache keys, and using a cache without a cache key set is likely meaningless.
2014-09-11Style.Maxim Dounin2-2/+4
2014-08-13Upstream: avoided directly terminating the connection.FengGu1-0/+5
When memory allocation failed in ngx_http_upstream_cache(), the connection would be terminated directly in ngx_http_upstream_init_request(). Return a INTERNAL_SERVER_ERROR response instead.
2014-09-08Fixed ETag memory allocation error handling.Maxim Dounin1-0/+1
The etag->hash must be set to 0 to avoid an empty ETag header being returned with the 500 Internal Server Error page after the memory allocation failure. Reported by Markus Linnala.
2014-09-05Upstream: suppressed the file cache slab allocator error messages.Roman Arutyunyan1-0/+4
The messages "ngx_slab_alloc() failed: no memory in cache keys zone" from the file cache slab allocator are suppressed since the allocation is likely to succeed after the forced expiration of cache nodes. The second allocation failure is reported.
2014-09-01Events: processing of posted events changed from LIFO to FIFO.Valentin Bartenev1-2/+2
In theory, this can provide a bit better distribution of latencies. Also it simplifies the code, since ngx_queue_t is now used instead of custom implementation.
2014-09-01Upstream: improved configuration parser diagnostics.Ruslan Ermilov1-5/+13
Made it clear when the selected balancing method does not support certain parameters of the "server" directive.
2014-08-29Headers filter: "add_header" with "always" parameter (ticket #98).Sergey Kandaurov1-13/+41
If specified, the header field is set regardless of the status code.
2014-08-27Variables: updated list of prefixes in ngx_http_rewrite_set().Maxim Dounin1-1/+5
2014-08-27Variables: fixed non-indexed access of prefix vars (ticket #600).Maxim Dounin1-2/+5
Previously, a configuration like location / { ssi on; ssi_types *; set $http_foo "bar"; return 200 '<!--#echo var="http_foo" -->\n'; } resulted in NULL pointer dereference in ngx_http_get_variable() as the variable was explicitly added to the variables hash, but its get_handler wasn't properly set in the hash. Fix is to make sure that get_handler is properly set by ngx_http_variables_init_vars().
2014-08-18SPDY: added a comment about handling stream with the timer set.Valentin Bartenev1-0/+5
2014-08-27SPDY: avoid setting timeout on stream events in ngx_http_writer().Valentin Bartenev1-0/+6
The SPDY module doesn't expect timers can be set on stream events for reasons other than delaying output. But ngx_http_writer() could add timer on write event if the delayed flag wasn't set and nginx is waiting for AIO completion. That could cause delays in sending response over SPDY when file AIO was used.
2014-08-26Stub status: corrected the "stub_status" directive.Ruslan Ermilov1-1/+1
The "stub_status" directive does not require an argument.
2014-08-25Sub filter: fixed matching for a single character.Valentin Bartenev1-0/+8
2014-08-19Mp4: use trak->smhd_size in ngx_http_mp4_read_smhd_atom().Roman Arutyunyan1-1/+1
Reported by Gang Li.
2014-08-18Image filter: downgrade strong etags to weak ones as needed.Sergey Kandaurov1-0/+1
2014-08-15Fixed typo.Sergey Kandaurov1-1/+1
2014-08-06Style: use specified macro instead of magic-number.Tatsuhiko Kubo1-1/+1
2014-06-19Perl: NULL-terminate argument list.Piotr Sikora1-1/+2
perl_parse() function expects argv/argc-style argument list, which according to the C standard must be NULL-terminated, that is: argv[argc] == NULL. This change fixes a crash (SIGSEGV) that could happen because of the buffer overrun during perl module initialization. Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-08-06Access log: allowed logs to syslog with "if=" (ticket #596).Maxim Dounin1-11/+6
2014-08-01Status: indentation and style, no functional changes.Sergey Kandaurov1-7/+9
2014-07-30Dav: ngx_http_map_uri_to_path() errors were not checked.FengGu1-4/+16
Once error occured, it could lead to use uninitialized variables to log, even more segmentation fault.
2014-07-28Upstream: SSL handshake timeouts.Maxim Dounin1-0/+5
Timeout may not be set on an upstream connection when we call ngx_ssl_handshake() in ngx_http_upstream_ssl_init_connection(), so make sure to arm it if it's not set. Based on a patch by Yichun Zhang.
2014-07-25GeoIP: not all variable fields were initialized.Yichun Zhang1-0/+6
The ngx_http_geoip_city_float_variable and ngx_http_geoip_city_int_variable functions did not always initialize all variable fields like "not_found", which could lead to empty values for those corresponding nginx variables randomly.
2014-07-18Upstream: ngx_http_upstream_store() error handling fixes.Maxim Dounin1-2/+5
Previously, ngx_http_map_uri_to_path() errors were not checked in ngx_http_upstream_store(). Moreover, in case of errors temporary files were not deleted, as u->store was set to 0, preventing cleanup code in ngx_http_upstream_finalize_request() from removing them. With this patch, u->store is set to 0 only if there were no errors. Reported by Feng Gu.
2014-07-18Reset of r->uri.len on URI parsing errors.Maxim Dounin1-0/+2
This ensures that debug logging and the $uri variable (if used in 400 Bad Request processing) will not try to access uninitialized memory. Found by Sergey Bobrov.
2014-07-09Style: use ngx_str_set().Tatsuhiko Kubo1-5/+2
2014-07-08SPDY: fix support for headers with multiple values.Piotr Sikora1-0/+2
Split SPDY header with multiple, NULL-separated values: cookie: foo\0bar into two separate HTTP headers with the same name: cookie: foo cookie: bar Even though the logic for this behavior already existed in the source code, it doesn't look that it ever worked and SPDY streams with such headers were simply rejected. Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-07-08Style: remove whitespace between function name and parentheses.Piotr Sikora3-5/+5
Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-07-08Style: add whitespace between control statement and parentheses.Piotr Sikora4-8/+8
Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-07-06SSL: stop accessing SSL_SESSION's fields directly.Piotr Sikora1-8/+6
SSL_SESSION struct is internal part of the OpenSSL library and it's fields should be accessed via API (when exposed), not directly. The unfortunate side-effect of this change is that we're losing reference count that used to be printed at the debug log level, but this seems to be an acceptable trade-off. Almost fixes build with -DOPENSSL_NO_SSL_INTERN. Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
2014-07-04Upstream: p->downstream_error instead of closing connection.Maxim Dounin1-11/+7
Previously, nginx closed client connection in cases when a response body from upstream was needed to be cached or stored but shouldn't be sent to the client. While this is normal for HTTP, it is unacceptable for SPDY. Fix is to use instead the p->downstream_error flag to prevent nginx from sending anything downstream. To make this work, the event pipe code was modified to properly cache empty responses with the flag set.
2014-07-01Upstream: fixed handling of write event after sending request.Valentin Bartenev1-7/+7
The ngx_http_upstream_dummy_handler() must be set regardless of the read event state. This prevents possible additional call of ngx_http_upstream_send_request_handler().
2014-06-16SSL: the "ssl_password_file" directive.Valentin Bartenev2-1/+38
2014-06-26Fixed wrong sizeof() in ngx_http_init_locations().Maxim Dounin1-2/+2
There is no real difference on all known platforms, but it's still wrong. Found by Coverity (CID 400876).
2014-06-26Upstream: cache revalidation using If-None-Match.Maxim Dounin5-4/+33
2014-06-26Cache: ETag now saved into cache header.Maxim Dounin3-1/+22
2014-06-26Cache: version in cache files.Maxim Dounin2-1/+13
This allows to change the structure of cache files without spamming logs with false alerts.
2014-06-26Entity tags: explicit flag to skip not modified filter.Maxim Dounin3-1/+12
Previously, last_modified_time was tested against -1 to check if the not modified filter should be skipped. Notably, this prevented nginx from additional If-Modified-Since (et al.) checks on proxied responses. Such behaviour is suboptimal in some cases though, as checks are always skipped on responses from a cache with ETag only (without Last-Modified), resulting in If-None-Match being ignored in such cases. Additionally, it was not possible to return 412 from the If-Unmodified-Since if last modification time was not known for some reason. This change introduces explicit r->disable_not_modified flag instead, which is set by ngx_http_upstream_process_headers().
2014-06-26Entity tags: weak comparison for If-None-Match.Maxim Dounin1-10/+28
2014-06-26Entity tags: downgrade strong etags to weak ones as needed.Maxim Dounin8-7/+56
See http://mailman.nginx.org/pipermail/nginx-devel/2013-November/004523.html.
2014-06-26Upstream: fixed cache revalidation with SSI.Maxim Dounin2-7/+32
Previous code in ngx_http_upstream_send_response() used last modified time from r->headers_out.last_modified_time after the header filter chain was already called. At this point, last_modified_time may be already cleared, e.g., with SSI, resulting in incorrect last modified time stored in a cache file. Fix is to introduce u->headers_in.last_modified_time instead.
2014-06-26Upstream: removed unused offset to content_length.Maxim Dounin1-2/+1
It's not needed since introduction of ngx_http_upstream_content_length() in 103b0d9afe07.
2014-06-26Upstream: no need to clear r->headers_out.last_modified_time.Maxim Dounin1-1/+0
Clearing of the r->headers_out.last_modified_time field if a response isn't cacheable in ngx_http_upstream_send_response() was introduced in 3b6afa999c2f, the commit to enable not modified filter for cacheable responses. It doesn't make sense though, as at this point header was already sent, and not modified filter was already executed. Therefore, the line was removed to simplify code.
2014-06-26Not modified filter: debug log format fixed.Maxim Dounin1-2/+2
2014-06-20Upstream: reduced diffs to the plus version of nginx.Ruslan Ermilov1-23/+21
No functional changes.