mirror of
https://github.com/apache/httpd.git
synced 2025-11-06 16:49:32 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1200457 13f79535-47bb-0310-9956-ffa450edef68
57 lines
1.8 KiB
C
57 lines
1.8 KiB
C
extern module AP_MODULE_DECLARE_DATA apreq_module;
|
|
|
|
struct dir_config {
|
|
const char *temp_dir;
|
|
apr_uint64_t read_limit;
|
|
apr_size_t brigade_limit;
|
|
};
|
|
|
|
/* The "warehouse", stored in r->request_config */
|
|
struct apache2_handle {
|
|
apreq_handle_t handle;
|
|
request_rec *r;
|
|
apr_table_t *jar, *args;
|
|
apr_status_t jar_status, args_status;
|
|
ap_filter_t *f;
|
|
};
|
|
|
|
/* Tracks the apreq filter state */
|
|
struct filter_ctx {
|
|
apr_bucket_brigade *bb; /* input brigade that's passed to the parser */
|
|
apr_bucket_brigade *bbtmp; /* temporary copy of bb, destined for the spool */
|
|
apr_bucket_brigade *spool; /* copied prefetch data for downstream filters */
|
|
apreq_parser_t *parser;
|
|
apreq_hook_t *hook_queue;
|
|
apreq_hook_t *find_param;
|
|
apr_table_t *body;
|
|
apr_status_t body_status;
|
|
apr_status_t filter_error;
|
|
apr_uint64_t bytes_read; /* Total bytes read into this filter. */
|
|
apr_uint64_t read_limit; /* Max bytes the filter may show to parser */
|
|
apr_size_t brigade_limit;
|
|
const char *temp_dir;
|
|
};
|
|
|
|
apr_status_t apreq_filter_prefetch(ap_filter_t *f, apr_off_t readbytes);
|
|
apr_status_t apreq_filter(ap_filter_t *f,
|
|
apr_bucket_brigade *bb,
|
|
ap_input_mode_t mode,
|
|
apr_read_type_e block,
|
|
apr_off_t readbytes);
|
|
|
|
void apreq_filter_make_context(ap_filter_t *f);
|
|
void apreq_filter_init_context(ap_filter_t *f);
|
|
|
|
APR_INLINE
|
|
static void apreq_filter_relocate(ap_filter_t *f)
|
|
{
|
|
request_rec *r = f->r;
|
|
|
|
if (f != r->input_filters) {
|
|
ap_filter_t *top = r->input_filters;
|
|
ap_remove_input_filter(f);
|
|
r->input_filters = f;
|
|
f->next = top;
|
|
}
|
|
}
|