]> git.kaiwu.me - nginx.git/commitdiff
shutdown client connection for cacheable header only responses
authorIgor Sysoev <igor@sysoev.ru>
Wed, 15 Apr 2009 11:19:27 +0000 (11:19 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Wed, 15 Apr 2009 11:19:27 +0000 (11:19 +0000)
src/http/ngx_http_upstream.c

index 68b4d5a390229e67ba85968badbe88c84679827c..74de6710eea03372f5ab54fc25a6726ef71e2be0 100644 (file)
@@ -1830,11 +1830,20 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
         return;
     }
 
+    c = r->connection;
+
     if (r->header_only) {
+
         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->write_event_handler = ngx_http_request_empty_handler;
-            r->connection->error = 1;
+            c->error = 1;
 
         } else {
             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;
     }
 
-    c = r->connection;
-
     clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
 
     if (!u->buffering) {