Mercurial > hg > nginx
diff src/http/ngx_http_request.c @ 362:7650aea1816f
nginx-0.0.7-2004-06-21-19:59:32 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 21 Jun 2004 15:59:32 +0000 |
parents | 446782c909b3 |
children | ceec87d1c2b3 |
line wrap: on
line diff
--- a/src/http/ngx_http_request.c Sun Jun 20 19:54:15 2004 +0000 +++ b/src/http/ngx_http_request.c Mon Jun 21 15:59:32 2004 +0000 @@ -1050,13 +1050,13 @@ wev = r->connection->write; wev->event_handler = ngx_http_writer; - if (wev->ready && r->delayed) { + if (wev->ready && wev->delayed) { return; } clcf = ngx_http_get_module_loc_conf(r->main ? r->main : r, ngx_http_core_module); - if (!r->delayed) { + if (!wev->delayed) { ngx_add_timer(wev, clcf->send_timeout); } @@ -1083,13 +1083,13 @@ r = c->data; if (wev->timedout) { - if (!r->delayed) { + if (!wev->delayed) { ngx_http_client_error(r, 0, NGX_HTTP_REQUEST_TIME_OUT); return; } wev->timedout = 0; - r->delayed = 0; + wev->delayed = 0; if (!wev->ready) { clcf = ngx_http_get_module_loc_conf(r->main ? r->main : r, @@ -1107,9 +1107,19 @@ } } else { - if (r->delayed) { + if (wev->delayed) { ngx_log_debug0(NGX_LOG_DEBUG_HTTP, wev->log, 0, "http writer delayed"); + + clcf = ngx_http_get_module_loc_conf(r->main ? r->main : r, + ngx_http_core_module); + wev->available = clcf->send_lowat; + + if (ngx_handle_write_event(wev, NGX_LOWAT_EVENT) == NGX_ERROR) { + ngx_http_close_request(r, 0); + ngx_http_close_connection(r->connection); + } + return; } } @@ -1122,7 +1132,7 @@ if (rc == NGX_AGAIN) { clcf = ngx_http_get_module_loc_conf(r->main ? r->main : r, ngx_http_core_module); - if (!wev->ready && !r->delayed) { + if (!wev->ready && !wev->delayed) { ngx_add_timer(wev, clcf->send_timeout); }