summaryrefslogtreecommitdiffhomepage
path: root/src/http (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2014-01-28Fixed TCP_DEFER_ACCEPT handling (ticket #353).Maxim Dounin1-23/+0
Backed out 05a56ebb084a, as it turns out that kernel can return connections without any delay if syncookies are used. This basically means we can't assume anything about connections returned with deferred accept set. To solve original problem the 05a56ebb084a tried to solve, i.e. to don't wait longer than needed if a connection was accepted after deferred accept timeout, this patch changes a timeout set with setsockopt(TCP_DEFER_ACCEPT) to 1 second, unconditionally. This is believed to be enough for speed improvements, and doesn't imply major changes to timeouts used. Note that before 2.6.32 connections were dropped after a timeout. Though it is believed that 1s is still appropriate for kernels before 2.6.32, as previously tcp_synack_retries controlled the actual timeout and 1s results in more than 1 minute actual timeout by default.
2014-01-22Upstream: reading from a client after connection upgrade.Maxim Dounin1-5/+1
Read event on a client connection might have been disabled during previous processing, and we at least need to handle events. Calling ngx_http_upstream_process_upgraded() is a simpliest way to do it. Notably this change is needed for select, poll and /dev/poll event methods. Previous version of this patch was posted here: http://mailman.nginx.org/pipermail/nginx/2014-January/041839.html
2014-01-22SPDY: fixed possible segfault.Valentin Bartenev1-0/+4
While processing a DATA frame, the link to related stream is stored in spdy connection object as part of connection state. But this stream can be closed between receiving parts of the frame.
2014-01-04Fixed "zero size buf in output" alerts.Maxim Dounin1-21/+37
If a request had an empty request body (with Content-Length: 0), and there were preread data available (e.g., due to a pipelined request in the buffer), the "zero size buf in output" alert might be logged while proxying the request to an upstream. Similar alerts appeared with client_body_in_file_only if a request had an empty request body.
2013-05-11Request body: fixed r->count increment on allocation failure.Maxim Dounin1-1/+2
2013-11-19Proper backtracking after space in a request line.Ruslan Ermilov1-0/+2
2013-09-04Win32: $request_time fixed.Maxim Dounin2-2/+2
On win32, time_t is 64 bits wide by default, and passing an ngx_msec_int_t argument for %T format specifier doesn't work. This doesn't manifest itself on other platforms as time_t and ngx_msec_int_t are usually of the same size.
2013-08-23Fixed try_files with empty argument (ticket #390).Maxim Dounin1-1/+3
2013-07-30Autoindex: improved ngx_de_info() error handling.Sergey Kandaurov1-1/+1
This allows to build a directory listing whenever a loop exists in symbolic link resolution of the path argument.
2013-07-30Autoindex: return NGX_ERROR on error if headers were sent.Sergey Kandaurov1-2/+2
This prevents ngx_http_finalize_request() from issuing ngx_http_special_response_handler() on a freed context.
2013-07-24SPDY: fixed segfault with "client_body_in_file_only" enabled.Valentin Bartenev1-9/+2
It is possible to send FLAG_FIN in additional empty data frame, even if it is known from the content-length header that request body is empty. And Firefox actually behaves like this (see ticket #357). To simplify code we sacrificed our microoptimization that did not work right due to missing check in the ngx_http_spdy_state_data() function for rb->buf set to NULL.
2013-06-10Perl: fixed r->header_in("Cookie") (ticket #351).Maxim Dounin1-9/+27
It was broken by X-Forwarded-For related changes in f7fe817c92a2 (1.3.14) as hh->offset is no longer 0 for Cookie.
2013-05-21Upstream: fixed fail_timeout and max_fails > 1.Maxim Dounin2-2/+8
Due to peer->checked always set since rev. c90801720a0c (1.3.0) by round-robin and least_conn balancers (ip_hash not affected), the code in ngx_http_upstream_free_round_robin_peer() function incorrectly reset peer->fails too often. Reported by Dmitry Popov, http://mailman.nginx.org/pipermail/nginx-devel/2013-May/003720.html
2013-05-11Proxy: $proxy_internal_body_length fixed.Maxim Dounin1-1/+2
The $proxy_internal_body_length value might change during request lifetime, notably if proxy_set_body used, and use of a cached value might result in incorrect upstream requests. Patch by Lanshun Zhou.
2013-05-11Fixed build with --with-mail_ssl_module.Maxim Dounin3-6/+6
If nginx was compiled without --with-http_ssl_module, but with some other module which uses OpenSSL (e.g. --with-mail_ssl_module), insufficient preprocessor check resulted in build failure. The problem was introduced by e0a3714a36f8 (1.3.14). Reported by Roman Arutyunyan.
2013-05-11Perl: extra "return" removed.Maxim Dounin1-1/+1
2013-05-06Fixed chunk size parsing.Maxim Dounin1-0/+4
2013-04-23SPDY: set NGX_TCP_NODELAY_DISABLED for fake connections.Valentin Bartenev1-0/+1
This is to avoid setting the TCP_NODELAY flag on SPDY socket in ngx_http_upstream_send_response(). The latter works per request, but in SPDY case it might affect other streams in connection.
2013-04-23Perl: request body handling fixed.Maxim Dounin1-3/+36
As of 1.3.9, chunked request body may be available with r->headers_in.content_length_n <= 0. Additionally, request body may be in multiple buffers even if r->request_body_in_single_buf was requested.
2013-04-19Configure: fixed perl Makefile generation (ticket #334).Maxim Dounin1-1/+1
Dependancy tracking introduced in r5169 were not handled absolute path names properly. Absolute names might appear in CORE_DEPS if --with-openssl or --with-pcre configure arguments are used to build OpenSSL/PCRE libraries. Additionally, revert part of r5169 to set NGX_INCS from Makefile variables. Makefile variables have $ngx_include_opt in them, which might result in wrong include paths being used. As a side effect, this also restores build with --with-http_perl_module and --without-http at the same time.
2013-04-16Request body: only read body in main request (ticket #330).Maxim Dounin1-1/+1
Before 1.3.9 an attempt to read body in a subrequest only caused problems if body wasn't already read or discarded in a main request. Starting with 1.3.9 it might also cause problems if body was discarded by a main request before subrequest start. Fix is to just ignore attempts to read request body in a subrequest, which looks like right thing to do anyway.
2013-04-12Upstream: warn if multiple non-stackable balancers are installed.Ruslan Ermilov2-0/+10
2013-04-11Upstream: fixed $upstream_response_length without buffering.Sergey Kandaurov1-1/+1
Reported by Piotr Sikora.
2013-04-10Configure: fixed nginx.so rebuild (broken by r5145).Maxim Dounin1-2/+4
To avoid further breaks it's now done properly, all the dependencies are now passed to Makefile.PL. While here, fixed include list passed to Makefile.PL to use Makefile variables rather than a list expanded during configure.
2013-04-04Upstream: removed surplus ngx_resolve_name_done() call.Valentin Bartenev1-10/+1
It will be called in ngx_http_upstream_finalize_request().
2013-04-03Limit req: rate should be non-zero.Valentin Bartenev1-1/+1
Specifying zero rate caused division by zero when calculating delays.
2013-03-29Pass PCRE_CASELESS to pcre_compile() for caseless matching.Ruslan Ermilov1-1/+1
Previously, we sometimes passed constant value 1 that happens to match PCRE_CASELESS and thus was harmless.
2013-03-28Simplified nginx version maintenance.Ruslan Ermilov1-1/+1
It's no longer necessary to update src/http/modules/perl/nginx.pm when version is bumped, as it's now derived from src/core/nginx.h.
2013-03-27Upstream: fixed tcp_nodelay with connection upgrade (ticket #325).Maxim Dounin1-20/+27
2013-03-27Version bump.Maxim Dounin1-1/+1
2013-03-25Upstream: removed rudiments of upstream connection caching.Ruslan Ermilov2-23/+0
This functionality is now provided by ngx_http_upstream_keepalive_module.
2013-03-25Upstream: removed sorting of upstream servers.Ruslan Ermilov1-22/+0
Sorting of upstream servers by their weights is not required by current balancing algorithms. This will likely change mapping to backends served by ip_hash weighted upstreams.
2013-03-25Upstream: removed double-free workarounds in peer.free() methods.Ruslan Ermilov3-19/+1
2013-03-25Upstream: only call peer.free() if peer.get() selected a peer.Ruslan Ermilov1-7/+10
2013-03-21Split clients: check length when parsing configuration.Ruslan Ermilov1-1/+1
2013-03-21Removed unused ngx_http_clear_variable() macro.Ruslan Ermilov1-3/+0
2013-03-21Fixed language in a comment preceding ngx_http_index_handler().Ruslan Ermilov1-5/+5
2013-03-21Use NGX_DEFAULT_POOL_SIZE macro where appropriate.Ruslan Ermilov3-4/+4
2013-03-20Preliminary experimental support for SPDY draft 2.Valentin Bartenev15-14/+4823
2013-03-20URI processing code moved to a separate function.Valentin Bartenev1-120/+125
This allows to reuse it in the upcoming SPDY module.
2013-03-19Image filter: the "image_filter_interlace" directive.Ruslan Ermilov1-0/+13
Patch by Ian Babrou, with minor changes.
2013-03-18The limit_req_status and limit_conn_status directives.Maxim Dounin2-3/+36
Patch by Nick Marden, with minor changes.
2013-03-15Status: introduced the "ngx_stat_waiting" counter.Valentin Bartenev1-2/+10
And corresponding variable $connections_waiting was added. Previously, waiting connections were counted as the difference between active connections and the sum of reading and writing connections. That made it impossible to count more than one request in one connection as reading or writing (as is the case for SPDY). Also, we no longer count connections in handshake state as waiting.
2013-03-15Allow to reuse connections that wait their first request.Valentin Bartenev1-0/+19
This should improve behavior under deficiency of connections. Since SSL handshake usually takes significant amount of time, we exclude connections from reusable queue during this period to avoid premature flush of them.
2013-03-14Upstream: fixed previous commit.Maxim Dounin1-1/+3
Store r->connection on stack to make sure it's still available if request finalization happens to actually free request memory.
2013-03-14Upstream: call ngx_http_run_posted_requests() on resolve errors.Maxim Dounin1-2/+6
If proxy_pass to a host with dynamic resolution was used to handle a subrequest, and host resolution failed, the main request wasn't run till something else happened on the connection. E.g. request to "/zzz" with the following configuration hanged: addition_types *; resolver 8.8.8.8; location /test { set $ihost xxx; proxy_pass http://$ihost; } location /zzz { add_after_body /test; return 200 "test"; } Report and original version of the patch by Lanshun Zhou, http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003476.html.
2013-03-14Request body: avoid linking rb->buf to r->header_in.Maxim Dounin1-1/+14
Code to reuse of r->request_body->buf in upstream module assumes it's dedicated buffer, hence after 1.3.9 (r4931) it might reuse r->header_in if client_body_in_file_only was set, resulting in original request corruption. It is considered to be safer to always create a dedicated buffer for rb->bufs to avoid such problems.
2013-03-14Request body: next upstream fix.Maxim Dounin1-2/+2
After introduction of chunked request body handling in 1.3.9 (r4931), r->request_body->bufs buffers have b->start pointing to original buffer start (and b->pos pointing to real data of this particular buffer). While this is ok as per se, it caused bad things (usually original request headers included before the request body) after reinit of the request chain in ngx_http_upstream_reinit() while sending the request to a next upstream server (which used to do b->pos = b->start for each buffer in the request chain). Patch by Piotr Sikora.
2013-03-12Fixed logging in ngx_http_wait_request_handler().Maxim Dounin1-1/+1
If c->recv() returns 0 there is no sense in using ngx_socket_errno for logging, its value meaningless. (The code in question was copied from ngx_http_keepalive_handler(), but ngx_socket_errno makes sense there as it's used as a part of ECONNRESET handling, and the c->recv() call is preceeded by the ngx_set_socket_errno(0) call.)
2013-03-11Removed unused prototype of ngx_http_find_server_conf().Valentin Bartenev1-1/+0
This function prototype and its implementation was added in r90, but the implementation was removed in r97.