shutdown client connection for cacheable header only responses

This commit is contained in:
Igor Sysoev 2009-04-15 11:19:27 +00:00
parent e41e724726
commit c796dd263a

View File

@ -1830,11 +1830,20 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
return; return;
} }
c = r->connection;
if (r->header_only) { if (r->header_only) {
if (u->cacheable || u->store) { if (u->cacheable || u->store) {
if (ngx_shutdown_socket(c->fd, NGX_WRITE_SHUTDOWN) == -1) {
ngx_connection_error(c, ngx_socket_errno,
ngx_shutdown_socket_n " failed");
}
r->read_event_handler = ngx_http_request_empty_handler; r->read_event_handler = ngx_http_request_empty_handler;
r->write_event_handler = ngx_http_request_empty_handler; r->write_event_handler = ngx_http_request_empty_handler;
r->connection->error = 1; c->error = 1;
} else { } else {
ngx_http_upstream_finalize_request(r, u, rc); ngx_http_upstream_finalize_request(r, u, rc);
@ -1849,8 +1858,6 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
r->request_body->temp_file->file.fd = NGX_INVALID_FILE; r->request_body->temp_file->file.fd = NGX_INVALID_FILE;
} }
c = r->connection;
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
if (!u->buffering) { if (!u->buffering) {