29#define APR_WANT_STRFUNC
30#define APR_WANT_MEMFUNC
58#ifndef AP_DEFAULT_MAX_RANGES
59#define AP_DEFAULT_MAX_RANGES 200
61#ifndef AP_DEFAULT_MAX_OVERLAPS
62#define AP_DEFAULT_MAX_OVERLAPS 20
64#ifndef AP_DEFAULT_MAX_REVERSALS
65#define AP_DEFAULT_MAX_REVERSALS 20
68#define MAX_PREALLOC_RANGES 100
177 start = clength - number;
217 if (
start >= clength) {
221 if (
end >= clength) {
277 "Sum of ranges larger than file, ignoring.");
286 for (
i = 0;
i < (*indexes)->nelts;
i++,
idx++) {
316#define BYTERANGE_FMT "%" APR_OFF_T_FMT "-%" APR_OFF_T_FMT "/%" APR_OFF_T_FMT
422 f->r->
pool,
c->bucket_alloc);
448 int max_ranges, max_overlaps, max_reversals;
488 (max_ranges >= 0 &&
num_ranges > max_ranges) ||
489 (max_overlaps >= 0 &&
overlaps > max_overlaps) ||
490 (max_reversals >= 0 &&
reversals > max_reversals)) {
508 "byteranges; boundary=",
514 CRLF "Content-type: ",
516 CRLF "Content-range: bytes ",
523 CRLF "Content-range: bytes ",
559 r->
pool,
c->bucket_alloc);
571 if (
i && !(
i & 0x1F)) {
Symbol export macros and hook functions.
APR-UTIL Buckets/Bucket Brigades.
APR general purpose library routines.
APR Standard Headers Support.
static apr_status_t send_416(ap_filter_t *f, apr_bucket_brigade *tmpbb)
#define MAX_PREALLOC_RANGES
static int ap_set_byterange(request_rec *r, apr_off_t clength, apr_array_header_t **indexes, int *overlaps, int *reversals)
#define AP_DEFAULT_MAX_OVERLAPS
static apr_status_t copy_brigade_range(apr_bucket_brigade *bb, apr_bucket_brigade *bbout, apr_off_t start, apr_off_t end)
#define AP_DEFAULT_MAX_RANGES
static int use_range_x(request_rec *r)
#define AP_DEFAULT_MAX_REVERSALS
#define APLOG_USE_MODULE(foo)
#define AP_CORE_DECLARE_NONSTD
#define ap_xlate_proto_to_ascii(x, y)
apr_status_t ap_pass_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket)
void ap_remove_output_filter(ap_filter_t *f)
#define ap_get_core_module_config(v)
ap_condition_e ap_condition_if_range(request_rec *r, apr_table_t *headers)
const char * ap_make_content_type(request_rec *r, const char *type)
void ap_set_content_type(request_rec *r, const char *ct)
apr_status_t ap_byterange_filter(ap_filter_t *f, apr_bucket_brigade *bb)
apr_bucket * ap_bucket_error_create(int error, const char *buf, apr_pool_t *p, apr_bucket_alloc_t *list)
#define APR_BRIGADE_INSERT_TAIL(b, e)
#define apr_bucket_split(e, point)
apr_file_t apr_off_t start
#define APR_BUCKET_NEXT(e)
#define APR_BRIGADE_CONCAT(a, b)
#define APR_BRIGADE_SENTINEL(b)
#define apr_bucket_delete(e)
#define APR_BUCKET_IS_EOS(e)
#define apr_bucket_copy(e, c)
#define APR_BRIGADE_FIRST(b)
#define HTTP_RANGE_NOT_SATISFIABLE
#define HTTP_PARTIAL_CONTENT
const char * ap_multipart_boundary
char * ap_getword(apr_pool_t *p, const char **line, char stop)
#define ap_strstr_c(s, c)
#define AP_DEBUG_ASSERT(exp)
int ap_parse_strict_length(apr_off_t *len, const char *str)
int strncasecmp(const char *a, const char *b, size_t n)
apr_vformatter_buff_t * c
const apr_array_header_t * first
#define AP_MAXRANGES_UNLIMITED
mod_core private header file
The representation of a filter chain.
Structure to store things which are per connection.
Per-directory configuration.
A structure that represents the current request.
const char * content_type
struct ap_conf_vector_t * per_dir_config
apr_table_t * headers_out
Utilities for EBCDIC conversion.
Apache date-time handling functions.