Apache HTTPD
Classes | Typedefs | Functions | Variables
mod_request.c File Reference
#include "apr.h"
#include "apr_strings.h"
#include "apr_buckets.h"
#include "apr_lib.h"
#include "ap_config.h"
#include "httpd.h"
#include "http_config.h"
#include "http_protocol.h"
#include "http_log.h"
#include "http_request.h"
#include "mod_request.h"

Go to the source code of this file.

Classes

struct  keep_body_filter_ctx
 
struct  kept_body_filter_ctx
 

Typedefs

typedef struct keep_body_filter_ctx keep_body_ctx_t
 
typedef struct kept_body_filter_ctx kept_body_ctx_t
 

Functions

static apr_status_t bail_out_on_error (apr_bucket_brigade *bb, ap_filter_t *f, int http_error)
 
static apr_status_t keep_body_filter (ap_filter_t *f, apr_bucket_brigade *b, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
 
static int kept_body_filter_init (ap_filter_t *f)
 
static apr_status_t kept_body_filter (ap_filter_t *f, apr_bucket_brigade *b, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
 
static int request_is_filter_present (request_rec *r, ap_filter_rec_t *fn)
 
static void ap_request_insert_filter (request_rec *r)
 
static void ap_request_remove_filter (request_rec *r)
 
static void * create_request_dir_config (apr_pool_t *p, char *dummy)
 
static void * merge_request_dir_config (apr_pool_t *p, void *basev, void *addv)
 
static const charset_kept_body_size (cmd_parms *cmd, void *dconf, const char *arg)
 
static void register_hooks (apr_pool_t *p)
 

Variables

static ap_filter_rec_tkeep_body_input_filter_handle
 
static ap_filter_rec_tkept_body_input_filter_handle
 
static const command_rec request_cmds []
 
static int *const aplog_module_index = &( request_module.module_index)
 

Typedef Documentation

◆ keep_body_ctx_t

◆ kept_body_ctx_t

Function Documentation

◆ ap_request_insert_filter()

static void ap_request_insert_filter ( request_rec r)
static

Insert filter hook.

Add the KEEP_BODY filter to the request, if the admin wants to keep the body using the KeptBodySize directive.

As a precaution, any pre-existing instances of either the kept_body or keep_body filters will be removed before the filter is added.

Parameters
rThe request

Definition at line 293 of file mod_request.c.

◆ ap_request_remove_filter()

static void ap_request_remove_filter ( request_rec r)
static

Definition at line 315 of file mod_request.c.

◆ bail_out_on_error()

static apr_status_t bail_out_on_error ( apr_bucket_brigade bb,
ap_filter_t f,
int  http_error 
)
static

Definition at line 40 of file mod_request.c.

◆ create_request_dir_config()

static void * create_request_dir_config ( apr_pool_t p,
char dummy 
)
static

Definition at line 328 of file mod_request.c.

◆ keep_body_filter()

static apr_status_t keep_body_filter ( ap_filter_t f,
apr_bucket_brigade b,
ap_input_mode_t  mode,
apr_read_type_e  block,
apr_off_t  readbytes 
)
static

This is the KEEP_BODY_INPUT filter for HTTP requests, for times when the body should be set aside for future use by other modules.

Definition at line 65 of file mod_request.c.

◆ kept_body_filter()

static apr_status_t kept_body_filter ( ap_filter_t f,
apr_bucket_brigade b,
ap_input_mode_t  mode,
apr_read_type_e  block,
apr_off_t  readbytes 
)
static

Filter to handle a kept body on subrequests.

If a body has been previously kept by the request, and if a subrequest wants to re-insert the body into the request, this input filter makes it happen.

Definition at line 198 of file mod_request.c.

◆ kept_body_filter_init()

static int kept_body_filter_init ( ap_filter_t f)
static

Initialisation of filter to handle a kept body on subrequests.

If a body is to be reinserted into a subrequest, any chunking will have been removed from the body during storage. We need to change the request from Transfer-Encoding: chunked to an explicit Content-Length.

< Module has handled this stage.

Definition at line 177 of file mod_request.c.

◆ merge_request_dir_config()

static void * merge_request_dir_config ( apr_pool_t p,
void *  basev,
void *  addv 
)
static

Definition at line 339 of file mod_request.c.

◆ register_hooks()

static void register_hooks ( apr_pool_t p)
static

Definition at line 372 of file mod_request.c.

◆ request_is_filter_present()

static int request_is_filter_present ( request_rec r,
ap_filter_rec_t fn 
)
static

Check whether this filter is not already present.

Definition at line 270 of file mod_request.c.

◆ set_kept_body_size()

static const char * set_kept_body_size ( cmd_parms cmd,
void *  dconf,
const char arg 
)
static

Definition at line 351 of file mod_request.c.

Variable Documentation

◆ aplog_module_index

int* const aplog_module_index = &( request_module.module_index)
static

Definition at line 385 of file mod_request.c.

◆ keep_body_input_filter_handle

ap_filter_rec_t* keep_body_input_filter_handle
static

Definition at line 37 of file mod_request.c.

◆ kept_body_input_filter_handle

ap_filter_rec_t* kept_body_input_filter_handle
static

Definition at line 38 of file mod_request.c.

◆ request_cmds

const command_rec request_cmds[]
static
Initial value:
= {
{ "KeptBodySize" , set_kept_body_size , NULL , 64 , TAKE1, "Maximum size of request bodies kept aside for use by filters" },
{ NULL }
}
@ TAKE1
Definition http_config.h:51
static const char * set_kept_body_size(cmd_parms *cmd, void *dconf, const char *arg)
return NULL
Definition mod_so.c:359

Definition at line 366 of file mod_request.c.