mirror of
https://github.com/apache/httpd.git
synced 2025-06-01 23:21:45 +03:00
Revert the read-while-caching and large-file-crash fixes for mod_disk_cache, ready to start again. Reverted: r450105 r450188 r462571 r462601 r462696 r467655 r467684 r468044 r468373 r468409 r470455 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@502365 13f79535-47bb-0310-9956-ffa450edef68
96 lines
3.5 KiB
C
96 lines
3.5 KiB
C
/* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright ownership.
|
|
* The ASF licenses this file to You under the Apache License, Version 2.0
|
|
* (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef MOD_DISK_CACHE_H
|
|
#define MOD_DISK_CACHE_H
|
|
|
|
/*
|
|
* include for mod_disk_cache: Disk Based HTTP 1.1 Cache.
|
|
*/
|
|
|
|
#define VARY_FORMAT_VERSION 3
|
|
#define DISK_FORMAT_VERSION 4
|
|
|
|
#define CACHE_HEADER_SUFFIX ".header"
|
|
#define CACHE_DATA_SUFFIX ".data"
|
|
#define CACHE_VDIR_SUFFIX ".vary"
|
|
|
|
#define AP_TEMPFILE_PREFIX "/"
|
|
#define AP_TEMPFILE_BASE "aptmp"
|
|
#define AP_TEMPFILE_SUFFIX "XXXXXX"
|
|
#define AP_TEMPFILE_BASELEN strlen(AP_TEMPFILE_BASE)
|
|
#define AP_TEMPFILE_NAMELEN strlen(AP_TEMPFILE_BASE AP_TEMPFILE_SUFFIX)
|
|
#define AP_TEMPFILE AP_TEMPFILE_PREFIX AP_TEMPFILE_BASE AP_TEMPFILE_SUFFIX
|
|
|
|
typedef struct {
|
|
/* Indicates the format of the header struct stored on-disk. */
|
|
apr_uint32_t format;
|
|
/* The HTTP status code returned for this response. */
|
|
int status;
|
|
/* The size of the entity name that follows. */
|
|
apr_size_t name_len;
|
|
/* The number of times we've cached this entity. */
|
|
apr_size_t entity_version;
|
|
/* Miscellaneous time values. */
|
|
apr_time_t date;
|
|
apr_time_t expire;
|
|
apr_time_t request_time;
|
|
apr_time_t response_time;
|
|
} disk_cache_info_t;
|
|
|
|
/*
|
|
* disk_cache_object_t
|
|
* Pointed to by cache_object_t::vobj
|
|
*/
|
|
typedef struct disk_cache_object {
|
|
const char *root; /* the location of the cache directory */
|
|
apr_size_t root_len;
|
|
char *tempfile; /* temp file tohold the content */
|
|
const char *prefix;
|
|
const char *datafile; /* name of file where the data will go */
|
|
const char *hdrsfile; /* name of file where the hdrs will go */
|
|
const char *hashfile; /* Computed hash key for this URI */
|
|
const char *name; /* Requested URI without vary bits - suitable for mortals. */
|
|
const char *key; /* On-disk prefix; URI with Vary bits (if present) */
|
|
apr_file_t *fd; /* data file */
|
|
apr_file_t *hfd; /* headers file */
|
|
apr_file_t *tfd; /* temporary file for data */
|
|
apr_off_t file_size; /* File size of the cached data file */
|
|
disk_cache_info_t disk_info; /* Header information. */
|
|
} disk_cache_object_t;
|
|
|
|
|
|
/*
|
|
* mod_disk_cache configuration
|
|
*/
|
|
/* TODO: Make defaults OS specific */
|
|
#define CACHEFILE_LEN 20 /* must be less than HASH_LEN/2 */
|
|
#define DEFAULT_DIRLEVELS 2
|
|
#define DEFAULT_DIRLENGTH 2
|
|
#define DEFAULT_MIN_FILE_SIZE 1
|
|
#define DEFAULT_MAX_FILE_SIZE 1000000
|
|
|
|
typedef struct {
|
|
const char* cache_root;
|
|
apr_size_t cache_root_len;
|
|
int dirlevels; /* Number of levels of subdirectories */
|
|
int dirlength; /* Length of subdirectory names */
|
|
apr_off_t minfs; /* minimum file size for cached files */
|
|
apr_off_t maxfs; /* maximum file size for cached files */
|
|
} disk_cache_conf;
|
|
|
|
#endif /*MOD_DISK_CACHE_H*/
|