diff options
Diffstat (limited to 'src/http/ngx_http_event.c')
| -rw-r--r-- | src/http/ngx_http_event.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/http/ngx_http_event.c b/src/http/ngx_http_event.c index b30050561..679210558 100644 --- a/src/http/ngx_http_event.c +++ b/src/http/ngx_http_event.c @@ -241,16 +241,27 @@ static int ngx_http_process_request_header(ngx_event_t *ev) } while (rc == NGX_AGAIN && r->header_in->pos.mem < r->header_in->last.mem); - if (r->header_timeout) { - r->header_timeout = 0; - ngx_del_timer(ev); - ngx_add_timer(ev, ngx_http_client_header_timeout); - } + if (rc == NGX_OK) { + /* HTTP header done */ + + if (r->header_timeout) { + r->header_timeout = 0; + ngx_del_timer(ev); + ngx_add_timer(ev, ngx_http_client_header_timeout); + } - if (rc == NGX_OK) return ngx_http_event_request_handler(r); - else + + } else { + + if (r->header_timeout) { + r->header_timeout = 0; + ngx_del_timer(ev); + ngx_add_timer(ev, ngx_http_client_header_timeout); + } + return rc; + } } |
