comparison src/http/ngx_http_request.c @ 7156:9c29644f6d03

Fixed worker_shutdown_timeout in various cases. The ngx_http_upstream_process_upgraded() did not handle c->close request, and upgraded connections do not use the write filter. As a result, worker_shutdown_timeout did not affect upgraded connections (ticket #1419). Fix is to handle c->close in the ngx_http_request_handler() function, thus covering most of the possible cases in http handling. Additionally, mail proxying did not handle neither c->close nor c->error, and thus worker_shutdown_timeout did not work for mail connections. Fix is to add c->close handling to ngx_mail_proxy_handler(). Also, added explicit handling of c->close to stream proxy, ngx_stream_proxy_process_connection(). This improves worker_shutdown_timeout handling in stream, it will no longer wait for some data being transferred in a connection before closing it, and will also provide appropriate logging at the "info" level.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 20 Nov 2017 16:31:07 +0300
parents 1b068a4e82d8
children 9d14931cec8c
comparison
equal deleted inserted replaced
7155:29e9571b1989 7156:9c29644f6d03
2223 ngx_http_set_log_request(c->log, r); 2223 ngx_http_set_log_request(c->log, r);
2224 2224
2225 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0, 2225 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
2226 "http run request: \"%V?%V\"", &r->uri, &r->args); 2226 "http run request: \"%V?%V\"", &r->uri, &r->args);
2227 2227
2228 if (c->close) {
2229 r->main->count++;
2230 ngx_http_terminate_request(r, 0);
2231 ngx_http_run_posted_requests(c);
2232 return;
2233 }
2234
2228 if (ev->delayed && ev->timedout) { 2235 if (ev->delayed && ev->timedout) {
2229 ev->delayed = 0; 2236 ev->delayed = 0;
2230 ev->timedout = 0; 2237 ev->timedout = 0;
2231 } 2238 }
2232 2239