From: Jim Jagielski Date: Mon, 14 Jul 2014 12:09:21 +0000 (+0000) Subject: Merge r1572896, r1572911 from trunk: X-Git-Tag: 2.4.10~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6003c8a0f0aad4cc5af8e12123d42345a5d8b114;p=apache Merge r1572896, r1572911 from trunk: mod_deflate: Don't fail when asked to flush inflated data to the user-agent and that coincides with the end of stream ("Zlib error flushing inflate buffer"). PR 56196. Submitted By: [Christoph Fausak ] Committed By: ylavic mod_deflate: follows up r1572896. Be safe from successive or post end-of-stream flush buckets. Submitted by: ylavic Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1610397 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 6697d8eee8..de28fc55af 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,10 @@ Changes with Apache 2.4.10 + *) mod_deflate: Don't fail when flushing inflated data to the user-agent + and that coincides with the end of stream ("Zlib error flushing inflate + buffer"). PR 56196. [Christoph Fausak ] + *) mod_proxy_ajp: Forward local IP address as a custom request attribute like we already do for the remote port. [Rainer Jung] diff --git a/STATUS b/STATUS index 24b4450436..cde7685bf5 100644 --- a/STATUS +++ b/STATUS @@ -100,18 +100,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_deflate: Don't fail when asked to flush inflated data to the user-agent - and that coincides with the end of stream ("Zlib error flushing - inflate buffer"). PR 56196. - trunk patch: http://svn.apache.org/r1572896 - http://svn.apache.org/r1572911 - Submitted by: [Christoph Fausak ] - Committed by: ylavic - 2.4.x patch: http://people.apache.org/~ylavic/httpd-2.4.x-mod_deflate-flush_end_of_stream.patch - (modulo CHANGES, added lately from r1603156) - +1: ylavic, covener, trawick - ylavic: does not depend on r1572092 or r1572655 and al above, - these proposals can be backported in any order. PATCHES PROPOSED TO BACKPORT FROM TRUNK: diff --git a/modules/filters/mod_deflate.c b/modules/filters/mod_deflate.c index a35cb81fc1..8ba21d36ff 100644 --- a/modules/filters/mod_deflate.c +++ b/modules/filters/mod_deflate.c @@ -1527,7 +1527,13 @@ static apr_status_t inflate_out_filter(ap_filter_t *f, /* flush the remaining data from the zlib buffers */ zRC = flush_libz_buffer(ctx, c, f->c->bucket_alloc, inflate, Z_SYNC_FLUSH, UPDATE_CRC); - if (zRC != Z_OK) { + if (zRC == Z_STREAM_END) { + if (ctx->validation_buffer == NULL) { + ctx->validation_buffer = apr_pcalloc(f->r->pool, + VALIDATION_SIZE); + } + } + else if (zRC != Z_OK) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01402) "Zlib error %d flushing inflate buffer (%s)", zRC, ctx->stream.msg);