Mercurial > hg > nginx-vendor-current
diff src/http/ngx_http_request.c @ 632:5b73504dd4ba NGINX_1_1_0
nginx 1.1.0
*) Feature: cache loader run time decrease.
*) Feature: "loader_files", "loader_sleep", and "loader_threshold"
options of the "proxy/fastcgi/scgi/uwsgi_cache_path" directives.
*) Feature: loading time decrease of configuration with large number of
HTTPS sites.
*) Feature: now nginx supports ECDHE key exchange ciphers.
Thanks to Adrian Kotelba.
*) Feature: the "lingering_close" directive.
Thanks to Maxim Dounin.
*) Bugfix: in closing connection for pipelined requests.
Thanks to Maxim Dounin.
*) Bugfix: nginx did not disable gzipping if client sent "gzip;q=0" in
"Accept-Encoding" request header line.
*) Bugfix: in timeout in unbuffered proxied mode.
Thanks to Maxim Dounin.
*) Bugfix: memory leaks when a "proxy_pass" directive contains
variables and proxies to an HTTPS backend.
Thanks to Maxim Dounin.
*) Bugfix: in parameter validaiton of a "proxy_pass" directive with
variables.
Thanks to Lanshun Zhou.
*) Bugfix: SSL did not work on QNX.
Thanks to Maxim Dounin.
*) Bugfix: SSL modules could not be built by gcc 4.6 without
--with-debug option.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 01 Aug 2011 00:00:00 +0400 |
parents | b9763778e212 |
children | 943566b4d82e |
line wrap: on
line diff
--- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -1439,8 +1439,6 @@ ngx_http_process_user_agent(ngx_http_req switch (msie[5]) { case '4': - r->headers_in.msie4 = 1; - /* fall through */ case '5': r->headers_in.msie6 = 1; break; @@ -1463,7 +1461,6 @@ ngx_http_process_user_agent(ngx_http_req if (ngx_strstrn(user_agent, "Opera", 5 - 1)) { r->headers_in.opera = 1; r->headers_in.msie = 0; - r->headers_in.msie4 = 0; r->headers_in.msie6 = 0; } @@ -2126,11 +2123,11 @@ ngx_http_finalize_connection(ngx_http_re if (r->discard_body) { r->read_event_handler = ngx_http_discarded_request_body_handler; + ngx_add_timer(r->connection->read, clcf->lingering_timeout); if (r->lingering_time == 0) { r->lingering_time = ngx_time() + (time_t) (clcf->lingering_time / 1000); - ngx_add_timer(r->connection->read, clcf->lingering_timeout); } } @@ -2145,8 +2142,14 @@ ngx_http_finalize_connection(ngx_http_re { ngx_http_set_keepalive(r); return; - - } else if (r->lingering_close && clcf->lingering_timeout > 0) { + } + + if (clcf->lingering_close == NGX_HTTP_LINGERING_ALWAYS + || (clcf->lingering_close == NGX_HTTP_LINGERING_ON + && (r->lingering_close + || r->header_in->pos < r->header_in->last + || r->connection->read->ready))) + { ngx_http_set_lingering_close(r); return; } @@ -2772,7 +2775,6 @@ ngx_http_lingering_close_handler(ngx_eve "http lingering close handler"); if (rev->timedout) { - c->timedout = 1; ngx_http_close_request(r, 0); return; }