diff options
author | Graham Leggett <minfrin@apache.org> | 2010-10-17 02:50:28 +0200 |
---|---|---|
committer | Graham Leggett <minfrin@apache.org> | 2010-10-17 02:50:28 +0200 |
commit | 3b619648dc5e5b49278877df87143138044d2fae (patch) | |
tree | ea4aea703122950bdc127ad77879731dc0d23ebf /modules/cache | |
parent | Support Cache-Control: only-if-cached, as per RFC2616 14.9.4. (diff) | |
download | apache2-3b619648dc5e5b49278877df87143138044d2fae.tar.xz apache2-3b619648dc5e5b49278877df87143138044d2fae.zip |
Don't attempt to remove the existing conditional headers until we have
committed to adding our own.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1023396 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/cache')
-rw-r--r-- | modules/cache/cache_storage.c | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/modules/cache/cache_storage.c b/modules/cache/cache_storage.c index 49b08e4155..95f1fef027 100644 --- a/modules/cache/cache_storage.c +++ b/modules/cache/cache_storage.c @@ -313,30 +313,6 @@ int cache_select(cache_request_rec *cache, request_rec *r) continue; } - ap_log_error(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r->server, - "Cached response for %s isn't fresh. Adding/replacing " - "conditional request headers.", r->uri); - - /* Make response into a conditional */ - cache->stale_headers = apr_table_copy(r->pool, - r->headers_in); - - /* We can only revalidate with our own conditionals: remove the - * conditions from the original request. - */ - apr_table_unset(r->headers_in, "If-Match"); - apr_table_unset(r->headers_in, "If-Modified-Since"); - apr_table_unset(r->headers_in, "If-None-Match"); - apr_table_unset(r->headers_in, "If-Range"); - apr_table_unset(r->headers_in, "If-Unmodified-Since"); - - /* - * Do not do Range requests with our own conditionals: If - * we get 304 the Range does not matter and otherwise the - * entity changed and we want to have the complete entity - */ - apr_table_unset(r->headers_in, "Range"); - etag = apr_table_get(h->resp_hdrs, "ETag"); lastmod = apr_table_get(h->resp_hdrs, "Last-Modified"); @@ -345,13 +321,37 @@ int cache_select(cache_request_rec *cache, request_rec *r) * our own conditionals. */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r->server, + "Cached response for %s isn't fresh. Adding/replacing " + "conditional request headers.", r->uri); + + /* Make response into a conditional */ + cache->stale_headers = apr_table_copy(r->pool, + r->headers_in); + + /* We can only revalidate with our own conditionals: remove the + * conditions from the original request. + */ + apr_table_unset(r->headers_in, "If-Match"); + apr_table_unset(r->headers_in, "If-Modified-Since"); + apr_table_unset(r->headers_in, "If-None-Match"); + apr_table_unset(r->headers_in, "If-Range"); + apr_table_unset(r->headers_in, "If-Unmodified-Since"); + + /* + * Do not do Range requests with our own conditionals: If + * we get 304 the Range does not matter and otherwise the + * entity changed and we want to have the complete entity + */ + apr_table_unset(r->headers_in, "Range"); + if (etag) { apr_table_set(r->headers_in, "If-None-Match", etag); } if (lastmod) { apr_table_set(r->headers_in, "If-Modified-Since", - lastmod); + lastmod); } cache->stale_handle = h; @@ -369,7 +369,7 @@ int cache_select(cache_request_rec *cache, request_rec *r) irv = cache->provider->remove_url(h, r->pool); if (irv != OK) { ap_log_error(APLOG_MARK, APLOG_DEBUG, irv, r->server, - "cache: attempt to remove url from cache unsuccessful."); + "cache: attempt to remove url from cache unsuccessful."); } /* try again with next cache type */ |