23#define APR_WANT_STRFUNC
38#define SHA1_DIGEST_BASE64_LEN 4*(APR_SHA1_DIGESTSIZE/3)
43#define HEX_DIGITS "0123456789abcdef"
65#define CHARS_PER_UINT64 (sizeof(apr_uint64_t) * 2)
114 else if (
er->pathname) {
118 "Make etag: could not open %s",
er->pathname);
128 "Make etag: could not seek");
137 "Make etag: could not seek");
146 "Make etag: could not seek");
173 "Make etag: could not read");
186 "Make etag: could not seek");
218 char *etag, *next, *
vlv;
226 if (
er->force_weak) {
362 er.force_weak = force_weak;
382 if (etag && etag[0]) {
406 if (etag && etag[0]) {
const char apr_size_t len
APR-UTIL Base64 Encoding.
APR-UTIL Buckets/Bucket Brigades.
#define APR_SHA1_DIGESTSIZE
APR Thread and Process Library.
APR Standard Headers Support.
#define ap_get_core_module_config(v)
unsigned long etag_components_t
void ap_set_etag(request_rec *r)
void ap_set_etag_fd(request_rec *r, apr_file_t *fd)
char * ap_make_etag_ex(request_rec *r, etag_rec *er)
char * ap_make_etag(request_rec *r, int force_weak)
#define APR_BRIGADE_EMPTY(b)
#define apr_bucket_delete(e)
#define APR_BRIGADE_FIRST(b)
#define apr_bucket_read(e, str, len, block)
apr_seek_where_t apr_off_t * offset
#define AP_REQUEST_IS_STRONG_ETAG(r)
Apache connection library.
static void etag_start(char *etag, const char *weak, char **next)
static void etag_end(char *next, const char *vlv, apr_size_t vlv_len)
#define SHA1_DIGEST_BASE64_LEN
static char * etag_uint64_to_hex(char *next, apr_uint64_t u)
static char * make_digest_etag(request_rec *r, etag_rec *er, char *vlv, apr_size_t vlv_len, char *weak, apr_size_t weak_len)
struct apr_bucket_alloc_t * bucket_alloc
Per-directory configuration.
etag_components_t etag_add
etag_components_t etag_bits
A structure with the ingredients for a file based etag.
const char * vlist_validator
A structure that represents the current request.
struct ap_conf_vector_t * per_dir_config
apr_table_t * headers_out