aboutsummaryrefslogtreecommitdiff
path: root/src/http/ngx_http_request.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-06-21 15:59:32 +0000
committerIgor Sysoev <igor@sysoev.ru>2004-06-21 15:59:32 +0000
commitef06648615d6ce6e000e6c737f80c2ba9fa04d3a (patch)
tree5f840689ca43ecba7218f9709f1bdfaa27611f53 /src/http/ngx_http_request.c
parent73a73b5a60b1c6c985f3e9a5d7cddbe292ad01a4 (diff)
downloadnginx-ef06648615d6ce6e000e6c737f80c2ba9fa04d3a.tar.gz
nginx-ef06648615d6ce6e000e6c737f80c2ba9fa04d3a.zip
nginx-0.0.7-2004-06-21-19:59:32 import
Diffstat (limited to 'src/http/ngx_http_request.c')
-rw-r--r--src/http/ngx_http_request.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 814e582e8..e935afbdf 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1050,13 +1050,13 @@ static void ngx_http_set_write_handler(ngx_http_request_t *r)
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 @@ void ngx_http_writer(ngx_event_t *wev)
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 @@ void ngx_http_writer(ngx_event_t *wev)
}
} 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 @@ void ngx_http_writer(ngx_event_t *wev)
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);
}