• Justin Erenkrantz's avatar
    Try to correctly follow RFC 2616 13.3 on validating stale cache responses by · 3a37af26
    Justin Erenkrantz authored
    teaching mod_cache's cache_select_url and cache_save_filter how to deal with
    this corner case.
    
    * modules/experimental/cache_storage.c
      (cache_select_url): If we have a stale entry, save the handle so that
      cache_save_filter can use it later, and make the request conditional.
    * modules/experimental/cache_util.c
      (ap_cache_request_is_conditional): Take in a table rather than request_rec.
    * modules/experimental/mod_cache.c
      (cache_out_filter): Fix bogus comment.
      (cache_save_filter): If we have already responded to the client, block all
      data; correctly merge in 'stale' handles that are not really stale; set
      r->status where appropriate; serve cached response if 'fresh'
    * modules/experimental/mod_cache.h
      (cache_info): Add a status field.
      (cache_request_rec): Add stale handle field and note we may block responses.
      (ap_cache_request_is_conditional): Update prototype.
    * modules/experimental/mod_disk_cache.c
      (store_headers): Use cache_info status instead of r->status.
    * modules/experimental/mod_mem_cache.c
      (recall_headers): Properly recall the status field.
      (store_headers): Store the status field via cache_info status.
    
    
    git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105322 13f79535-47bb-0310-9956-ffa450edef68
    3a37af26
To find the state of this project's repository at the time of any of these versions, check out the tags.