httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From minf...@apache.org
Subject svn commit: r1023398 - /httpd/httpd/trunk/modules/cache/cache_storage.c
Date Sun, 17 Oct 2010 01:24:24 GMT
Author: minfrin
Date: Sun Oct 17 01:24:24 2010
New Revision: 1023398

URL: http://svn.apache.org/viewvc?rev=1023398&view=rev
Log:
Don't attempt to kill a stale entry that cannot be revalidated so early
in the process, as this will happen later anyway as necessary. We may want
to serve the stale entry should the backend not be available.

Modified:
    httpd/httpd/trunk/modules/cache/cache_storage.c

Modified: httpd/httpd/trunk/modules/cache/cache_storage.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/cache/cache_storage.c?rev=1023398&r1=1023397&r2=1023398&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/cache/cache_storage.c (original)
+++ httpd/httpd/trunk/modules/cache/cache_storage.c Sun Oct 17 01:24:24 2010
@@ -313,6 +313,24 @@ int cache_select(cache_request_rec *cach
                     continue;
                 }
 
+                /* set aside the stale entry for accessing later */
+                cache->stale_headers = apr_table_copy(r->pool,
+                        r->headers_in);
+                cache->stale_handle = h;
+
+                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);
+
+                /* 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");
+
                 etag = apr_table_get(h->resp_hdrs, "ETag");
                 lastmod = apr_table_get(h->resp_hdrs, "Last-Modified");
 
@@ -321,30 +339,6 @@ int cache_select(cache_request_rec *cach
                      * 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);
                     }
@@ -353,30 +347,18 @@ int cache_select(cache_request_rec *cach
                         apr_table_set(r->headers_in, "If-Modified-Since",
                                 lastmod);
                     }
-                    cache->stale_handle = h;
-
-                    /* ready to revalidate, pretend we were never here */
-                    return DECLINED;
-                }
-                else {
-                    int irv;
 
                     /*
-                     * The copy isn't fresh enough, but we cannot revalidate.
-                     * So it is the same case as if there had not been a cached
-                     * entry at all. Thus delete the entry from cache.
+                     * 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
                      */
-                    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.");
-                    }
+                    apr_table_unset(r->headers_in, "Range");
 
-                    /* try again with next cache type */
-                    list = list->next;
-                    continue;
                 }
 
+                /* ready to revalidate, pretend we were never here */
+                return DECLINED;
             }
 
             /* Okay, this response looks okay.  Merge in our stuff and go. */



Mime
View raw message