* Take headers from the cache, and overlap them over the existing response
* headers.
*/
-CACHE_DECLARE(void) ap_cache_accept_headers(cache_handle_t *h, request_rec *r,
- int preserve_orig)
+void cache_accept_headers(cache_handle_t *h, request_rec *r,
+ int preserve_orig)
{
apr_table_t *cookie_table, *hdr_copy;
const char *v;
}
/* Okay, this response looks okay. Merge in our stuff and go. */
- ap_cache_accept_headers(h, r, 0);
+ cache_accept_headers(h, r, 0);
cache->handle = h;
return OK;
apr_status_t cache_generate_key_default(cache_request_rec *cache, request_rec *r,
apr_pool_t* p, char **key);
+/**
+ * Merge in cached headers into the response
+ * @param h cache_handle_t
+ * @param r request_rec
+ * @param preserve_orig If 1, the values in r->headers_out are preserved.
+ * Otherwise, they are overwritten by the cached value.
+ */
+void cache_accept_headers(cache_handle_t *h, request_rec *r,
+ int preserve_orig);
+
#ifdef __cplusplus
}
#endif
#include "mod_cache.h"
+#include "cache_util.h"
#include <ap_provider.h>
APLOG_USE_MODULE(cache);
return !strncmp(filter->path, url->path, pathlen);
}
-CACHE_DECLARE(cache_provider_list *)ap_cache_get_providers(request_rec *r,
- cache_server_conf *conf,
- apr_uri_t uri)
+cache_provider_list *cache_get_providers(request_rec *r,
+ cache_server_conf *conf,
+ apr_uri_t uri)
{
cache_provider_list *providers = NULL;
int i;
* no point is it possible for this lock to permanently deny access to
* the backend.
*/
-CACHE_DECLARE(apr_status_t) ap_cache_try_lock(cache_server_conf *conf,
+apr_status_t cache_try_lock(cache_server_conf *conf,
cache_request_rec *cache, request_rec *r, char *key)
{
apr_status_t status;
* If an optional bucket brigade is passed, the lock will only be
* removed if the bucket brigade contains an EOS bucket.
*/
-CACHE_DECLARE(apr_status_t) ap_cache_remove_lock(cache_server_conf *conf,
+apr_status_t cache_remove_lock(cache_server_conf *conf,
cache_request_rec *cache, request_rec *r, char *key,
apr_bucket_brigade *bb)
{
}
-CACHE_DECLARE(int) ap_cache_check_freshness(cache_handle_t *h,
- cache_request_rec *cache,
- request_rec *r)
+int cache_check_freshness(cache_handle_t *h,
+ cache_request_rec *cache,
+ request_rec *r)
{
apr_status_t status;
apr_int64_t age, maxage_req, maxage_cresp, maxage, smaxage, maxstale;
* A lock that exceeds a maximum age will be deleted, and another
* request gets to make a new lock and try again.
*/
- status = ap_cache_try_lock(conf, cache, r, (char *)h->cache_obj->key);
+ status = cache_try_lock(conf, cache, r, (char *)h->cache_obj->key);
if (APR_SUCCESS == status) {
/* we obtained a lock, follow the stale path */
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
* cache_util.c
*/
+struct cache_enable {
+ apr_uri_t url;
+ const char *type;
+ apr_size_t pathlen;
+};
+
+struct cache_disable {
+ apr_uri_t url;
+ apr_size_t pathlen;
+};
+
+/* static information about the local cache */
+typedef struct {
+ apr_array_header_t *cacheenable; /* URLs to cache */
+ apr_array_header_t *cachedisable; /* URLs not to cache */
+ /* Maximum time to keep cached files in msecs */
+ apr_time_t maxex;
+ int maxex_set;
+ /* default time to keep cached file in msecs */
+ int defex_set;
+ apr_time_t defex;
+ /* factor for estimating expires date */
+ double factor;
+ int factor_set;
+ /** ignore the last-modified header when deciding to cache this request */
+ int no_last_mod_ignore_set;
+ int no_last_mod_ignore;
+ /** ignore client's requests for uncached responses */
+ int ignorecachecontrol;
+ int ignorecachecontrol_set;
+ /** ignore expiration date from server */
+ int store_expired;
+ int store_expired_set;
+ /** ignore Cache-Control: private header from server */
+ int store_private;
+ int store_private_set;
+ /** ignore Cache-Control: no-store header from client or server */
+ int store_nostore;
+ int store_nostore_set;
+ /* flag if CacheIgnoreHeader has been set */
+ #define CACHE_IGNORE_HEADERS_SET 1
+ #define CACHE_IGNORE_HEADERS_UNSET 0
+ int ignore_headers_set;
+ /** store the headers that should not be stored in the cache */
+ apr_array_header_t *ignore_headers;
+ /* Minimum time to keep cached files in msecs */
+ apr_time_t minex;
+ int minex_set;
+ /** ignore query-string when caching */
+ int ignorequerystring;
+ int ignorequerystring_set;
+ /* flag if CacheIgnoreURLSessionIdentifiers has been set */
+ #define CACHE_IGNORE_SESSION_ID_SET 1
+ #define CACHE_IGNORE_SESSION_ID_UNSET 0
+ int ignore_session_id_set;
+ /** store the identifiers that should not be used for key calculation */
+ apr_array_header_t *ignore_session_id;
+ /* thundering herd lock */
+ int lock;
+ int lock_set;
+ const char *lockpath;
+ int lockpath_set;
+ int lockmaxage_set;
+ apr_time_t lockmaxage;
+ /** run within the quick handler */
+ int quick;
+ int quick_set;
+} cache_server_conf;
+
/**
* Check the freshness of the cache object per RFC2616 section 13.2 (Expiration Model)
* @param h cache_handle_t
cache_request_rec *cache, request_rec *r, char *key,
apr_bucket_brigade *bb);
-/**
- * Merge in cached headers into the response
- * @param h cache_handle_t
- * @param r request_rec
- * @param preserve_orig If 1, the values in r->headers_out are preserved.
- * Otherwise, they are overwritten by the cached value.
- */
-void cache_accept_headers(cache_handle_t *h, request_rec *r,
- int preserve_orig);
-
cache_provider_list *cache_get_providers(request_rec *r,
cache_server_conf *conf, apr_uri_t uri);
#define CACHE_DECLARE_DATA __declspec(dllimport)
#endif
-struct cache_enable {
- apr_uri_t url;
- const char *type;
- apr_size_t pathlen;
-};
-
-struct cache_disable {
- apr_uri_t url;
- apr_size_t pathlen;
-};
-
-/* static information about the local cache */
-typedef struct {
- apr_array_header_t *cacheenable; /* URLs to cache */
- apr_array_header_t *cachedisable; /* URLs not to cache */
- /* Maximum time to keep cached files in msecs */
- apr_time_t maxex;
- int maxex_set;
- /* default time to keep cached file in msecs */
- int defex_set;
- apr_time_t defex;
- /* factor for estimating expires date */
- double factor;
- int factor_set;
- /** ignore the last-modified header when deciding to cache this request */
- int no_last_mod_ignore_set;
- int no_last_mod_ignore;
- /** ignore client's requests for uncached responses */
- int ignorecachecontrol;
- int ignorecachecontrol_set;
- /** ignore expiration date from server */
- int store_expired;
- int store_expired_set;
- /** ignore Cache-Control: private header from server */
- int store_private;
- int store_private_set;
- /** ignore Cache-Control: no-store header from client or server */
- int store_nostore;
- int store_nostore_set;
- /* flag if CacheIgnoreHeader has been set */
- #define CACHE_IGNORE_HEADERS_SET 1
- #define CACHE_IGNORE_HEADERS_UNSET 0
- int ignore_headers_set;
- /** store the headers that should not be stored in the cache */
- apr_array_header_t *ignore_headers;
- /* Minimum time to keep cached files in msecs */
- apr_time_t minex;
- int minex_set;
- /** ignore query-string when caching */
- int ignorequerystring;
- int ignorequerystring_set;
- /* flag if CacheIgnoreURLSessionIdentifiers has been set */
- #define CACHE_IGNORE_SESSION_ID_SET 1
- #define CACHE_IGNORE_SESSION_ID_UNSET 0
- int ignore_session_id_set;
- /** store the identifiers that should not be used for key calculation */
- apr_array_header_t *ignore_session_id;
- /* thundering herd lock */
- int lock;
- int lock_set;
- const char *lockpath;
- int lockpath_set;
- int lockmaxage_set;
- apr_time_t lockmaxage;
- /** run within the quick handler */
- int quick;
- int quick_set;
-} cache_server_conf;
-
/* cache info information */
typedef struct cache_info cache_info;
struct cache_info {