diff src/http/modules/proxy/ngx_http_proxy_handler.c @ 140:e32405df0e77

nginx-0.0.1-2003-10-08-08:34:07 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 08 Oct 2003 04:34:07 +0000
parents 54307053f185
children 656d468f4ead
line wrap: on
line diff
--- a/src/http/modules/proxy/ngx_http_proxy_handler.c
+++ b/src/http/modules/proxy/ngx_http_proxy_handler.c
@@ -779,12 +779,25 @@ static void ngx_http_proxy_process_upstr
     ngx_log_debug(rev->log, "http proxy process upstream body");
 
     if (rev->timedout) {
-        ngx_http_proxy_next_upstream(p);
+        ngx_http_proxy_close_connection(p->upstream.connection);
+        p->upstream.connection = NULL;
         return;
     }
 
     ngx_event_proxy_read_upstream(p->event_proxy);
 
+    if (p->event_proxy->upstream_eof) {
+        ngx_http_proxy_close_connection(p->upstream.connection);
+        p->upstream.connection = NULL;
+        return;
+    }
+
+    if (p->event_proxy->upstream_error) {
+        ngx_http_proxy_close_connection(p->upstream.connection);
+        p->upstream.connection = NULL;
+        return;
+    }
+
     return;
 }
 
@@ -1043,6 +1056,8 @@ static void ngx_http_proxy_close_connect
         c->write->timer_set = 0;
     }
 
+    /* TODO: move connection to the connection pool */
+
     if (ngx_del_conn) {
         ngx_del_conn(c);