Mercurial > hg > nginx
changeset 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 |
files | src/event/ngx_event_connect.c src/event/ngx_event_proxy.c src/http/modules/proxy/ngx_http_proxy_handler.c |
diffstat | 3 files changed, 20 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/ngx_event_connect.c Tue Oct 07 15:30:05 2003 +0000 +++ b/src/event/ngx_event_connect.c Wed Oct 08 04:34:07 2003 +0000 @@ -161,6 +161,7 @@ rev->data = wev->data = c; c->read = rev; c->write = wev; + wev->write = 1; rev->instance = wev->instance = !instance;
--- a/src/event/ngx_event_proxy.c Tue Oct 07 15:30:05 2003 +0000 +++ b/src/event/ngx_event_proxy.c Wed Oct 08 04:34:07 2003 +0000 @@ -9,7 +9,7 @@ #if (NGX_EVENT_COPY_FILTER) static int ngx_event_proxy_copy_input_filter(ngx_event_proxy_t *p, - ngx_chain_t *chain); + ngx_chain_t *chain); #endif @@ -109,7 +109,7 @@ ngx_log_debug(p->log, "file hunk: %08X" _ chain->hunk _ chain->hunk->end - chain->hunk->last); - /* if the hunks is not needed to be saved in a cache and + /* if the hunks are not needed to be saved in a cache and a downstream is ready then write the hunks to a downstream */ } else if (p->cachable == 0 && p->downstream->write->ready) { @@ -709,7 +709,7 @@ /* the copy input filter */ static int ngx_event_proxy_copy_input_filter(ngx_event_proxy_t *p, - ngx_chain_t *chain) + ngx_chain_t *chain) { ngx_hunk_t *h; ngx_chain_t *entry, *temp;
--- a/src/http/modules/proxy/ngx_http_proxy_handler.c Tue Oct 07 15:30:05 2003 +0000 +++ b/src/http/modules/proxy/ngx_http_proxy_handler.c Wed Oct 08 04:34:07 2003 +0000 @@ -779,12 +779,25 @@ 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 @@ c->write->timer_set = 0; } + /* TODO: move connection to the connection pool */ + if (ngx_del_conn) { ngx_del_conn(c);