Yes, looks like you're right. It seems odd that we have some paths that assign r->headers_out and some that don't.
In any case, here is the updated patch. It may be worth opening this as a bug report so we can keep track of it easier. On Wed, Sep 16, 2015 at 3:47 AM, Yann Ylavic <ylavic....@gmail.com> wrote: > Hi Ed, > > On Tue, Sep 15, 2015 at 10:10 PM, Edward Lu <chaos...@gmail.com> wrote: > > This looks like a bug. I believe I've tracked down the cause to a single > > errant line in the cache module; can you apply the attached patch to > 2.4.x > > and see if it fixes the problem? > > I think the patch would also need this hunk: > > Index: modules/cache/mod_cache.c > =================================================================== > --- modules/cache/mod_cache.c (revision 1703149) > +++ modules/cache/mod_cache.c (working copy) > @@ -1462,6 +1462,7 @@ static apr_status_t cache_save_filter(ap_filter_t > * forward all of them to the client, including non-cacheable > ones). > */ > r->headers_out = cache_merge_headers_out(r); > + apr_table_clear(r->err_headers_out); > > /* Merge in our cached headers. However, keep any updated > values. */ > /* take output, overlay on top of cached */ > -- > > Otherwise we might leave this path with some headers both in > headers_out and err_headers_out. > > Regards, > Yann. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org > For additional commands, e-mail: users-h...@httpd.apache.org > >
diff --git a/modules/cache/cache_util.c b/modules/cache/cache_util.c index b7454ad..070a5f0 100644 --- a/modules/cache/cache_util.c +++ b/modules/cache/cache_util.c @@ -1254,7 +1254,6 @@ apr_table_t *cache_merge_headers_out(request_rec *r) headers_out = apr_table_overlay(r->pool, r->headers_out, r->err_headers_out); - apr_table_clear(r->err_headers_out); if (r->content_type && !apr_table_get(headers_out, "Content-Type")) { diff --git a/modules/cache/mod_cache.c b/modules/cache/mod_cache.c index b95f0a8..091d527 100644 --- a/modules/cache/mod_cache.c +++ b/modules/cache/mod_cache.c @@ -1452,6 +1452,7 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) * forward all of them to the client, including non-cacheable ones). */ r->headers_out = cache_merge_headers_out(r); + apr_table_clear(r->err_headers_out); /* Merge in our cached headers. However, keep any updated values. */ /* take output, overlay on top of cached */
--------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org For additional commands, e-mail: users-h...@httpd.apache.org