updated the gzip_flush_bug patch according to the feedback from Maxim Dounin.

This commit is contained in:
Yichun Zhang (agentzh) 2013-10-26 17:24:51 -07:00
parent 1df484be52
commit 8bc4bf391a
1 changed files with 24 additions and 15 deletions

View File

@ -1,19 +1,28 @@
--- nginx-1.4.3/src/http/modules/ngx_http_gzip_filter_module.c 2013-10-08 05:07:14.000000000 -0700
+++ nginx-1.4.3-patched/src/http/modules/ngx_http_gzip_filter_module.c 2013-10-25 17:00:00.712697908 -0700
@@ -433,7 +433,15 @@ ngx_http_gzip_body_filter(ngx_http_reque
if (ctx->out == NULL) {
ngx_http_gzip_filter_free_copy_buf(r, ctx);
+++ nginx-1.4.3-patched/src/http/modules/ngx_http_gzip_filter_module.c 2013-10-26 17:14:22.132109569 -0700
@@ -370,11 +370,12 @@ ngx_http_gzip_body_filter(ngx_http_reque
}
}
- return ctx->busy ? NGX_AGAIN : NGX_OK;
+ if (ctx->busy) {
+ if (in == NULL) {
+ return ngx_http_next_body_filter(r, NULL);
+ }
+
+ return NGX_AGAIN;
+ }
+
+ return NGX_OK;
- if (ctx->nomem) {
+ if (ctx->nomem || in == NULL) {
/* flush busy buffers */
- if (ngx_http_next_body_filter(r, NULL) == NGX_ERROR) {
+ rc = ngx_http_next_body_filter(r, NULL);
+ if (rc == NGX_ERROR) {
goto failed;
}
if (!ctx->gzheader) {
@@ -383,6 +384,10 @@ ngx_http_gzip_body_filter(ngx_http_reque
ngx_chain_update_chains(r->pool, &ctx->free, &ctx->busy, &cl,
(ngx_buf_tag_t) &ngx_http_gzip_filter_module);
ctx->nomem = 0;
+
+ if (in == NULL) {
+ return rc;
+ }
}
for ( ;; ) {