]> git.kaiwu.me - nginx.git/commitdiff
Upstream: fixed "too big header" check.
authorMaxim Dounin <mdounin@mdounin.ru>
Fri, 10 Feb 2012 14:31:04 +0000 (14:31 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Fri, 10 Feb 2012 14:31:04 +0000 (14:31 +0000)
If header filter postponed processing of a header by returning NGX_AGAIN
and not moved u->buffer->pos, previous check incorrectly assumed there
is additional space and did another recv() with zero-size buffer.  This
resulted in "upstream prematurely closed connection" error instead
of correct "upstream sent too big header" one.

Patch by Feibo Li.

src/http/ngx_http_upstream.c

index ba21c013543431a49b46bde0c71995299bc98105..577c2b563556e798209e3b77c98bea1f9e6cf3cb 100644 (file)
@@ -1591,7 +1591,7 @@ ngx_http_upstream_process_header(ngx_http_request_t *r, ngx_http_upstream_t *u)
 
         if (rc == NGX_AGAIN) {
 
-            if (u->buffer.pos == u->buffer.end) {
+            if (u->buffer.last == u->buffer.end) {
                 ngx_log_error(NGX_LOG_ERR, c->log, 0,
                               "upstream sent too big header");