From: Jim Jagielski Date: Thu, 17 Jul 2014 18:21:59 +0000 (+0000) Subject: Merge r1572896, r1572911, r1603156 from trunk: X-Git-Tag: 2.2.28~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9128ebdead8b2496353a70e257fda6b4e4f271ea;p=thirdparty%2Fapache%2Fhttpd.git Merge r1572896, r1572911, r1603156 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. Add missing CHANGES entries for r1572655,1572663,1572668-1572671,1573224,1586745,1587594,1587639,1590509, r1572092, and r1572896,1572911. Submitted by: ylavic Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@1611428 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index c480c9cd4ca..86a1867ff40 100644 --- a/CHANGES +++ b/CHANGES @@ -30,6 +30,10 @@ Changes with Apache 2.2.28 *) mod_proxy_ajp: Forward local IP address as a custom request attribute like we already do for the remote port. [Rainer Jung] + *) 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_cache, mod_disk_cache: With CacheLock enabled, responses with a Vary header might not get the benefit of the thundering herd protection due to an incorrect internal cache key. PR 50317. diff --git a/STATUS b/STATUS index 6ab876f8826..bd065e127b7 100644 --- a/STATUS +++ b/STATUS @@ -100,18 +100,6 @@ 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 - http://svn.apache.org/r1603156 (partially, CHANGES update) - 2.4.x patch: http://svn.apache.org/r1610397 (2.4.10) - 2.2.x patch: http://people.apache.org/~ylavic/httpd-2.2.x-mod_deflate-flush_end_of_stream.patch - (modulo CHANGES) - +1: ylavic, breser, jim - - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/filters/mod_deflate.c b/modules/filters/mod_deflate.c index bd68812bca6..4f415e00382 100644 --- a/modules/filters/mod_deflate.c +++ b/modules/filters/mod_deflate.c @@ -1286,7 +1286,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) { return APR_EGENERAL; }