diff options
Diffstat (limited to 'src/http/ngx_http_request.c')
-rw-r--r-- | src/http/ngx_http_request.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c index d801e2ce5..680b3bd45 100644 --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -958,7 +958,7 @@ ngx_http_read_request_header(ngx_http_request_t *r) } if (n == 0 || n == NGX_ERROR) { - ngx_http_close_request(r, NGX_HTTP_BAD_REQUEST); + ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST); return NGX_ERROR; } @@ -1480,17 +1480,24 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) } if (r->fast_subrequest) { + + if (rc == NGX_AGAIN) { + r->fast_subrequest = 0; + } + ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "http fast subrequest: \"%V?%V\" done", &r->uri, &r->args); return; } - ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, - "http wake parent request: \"%V?%V\"", - &pr->uri, &pr->args); + if (rc != NGX_AGAIN) { + ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, + "http wake parent request: \"%V?%V\"", + &pr->uri, &pr->args); - pr->write_event_handler(pr); + pr->write_event_handler(pr); + } } return; |