request_rec Struct Reference

A structure that represents the current request. More...

#include <httpd.h>

Collaboration diagram for request_rec:

Data Fields

char * the_request
int assbackwards
int proxyreq
int header_only
int proto_num
const char * protocol
const char * hostname
apr_time_t request_time
const char * status_line
int status
int method_number
const char * method
ap_method_mask_t allowed
apr_off_t sent_bodyct
apr_off_t bytes_sent
apr_time_t mtime
const char * range
apr_off_t clength
int chunked
int read_body
int read_chunked
unsigned expecting_100
apr_off_t remaining
apr_off_t read_length
const char * content_type
const char * handler
const char * content_encoding
char * vlist_validator
char * user
char * ap_auth_type
char * unparsed_uri
char * uri
char * filename
char * canonical_filename
char * path_info
char * args
int used_path_info
int eos_sent
struct ap_conf_vector_tper_dir_config
struct ap_conf_vector_trequest_config
const struct ap_logconflog
const char * log_id
const struct htaccess_resulthtaccess
struct ap_filter_toutput_filters
struct ap_filter_tinput_filters
struct ap_filter_tproto_output_filters
struct ap_filter_tproto_input_filters
int no_cache
int no_local_copy
apr_uri_t parsed_uri
apr_finfo_t finfo
char * useragent_ip
char * useragent_host
int double_reverse
int taint
unsigned int flushed:1
ap_request_bnotes_t bnotes

Detailed Description

A structure that represents the current request.

Field Documentation

ap_method_mask_t request_rec::allowed

'allowed' is a bitvector of the allowed methods.

A handler must ensure that the request method is one that it is capable of handling. Generally modules should DECLINE any request methods they do not handle. Prior to aborting the handler like this the handler should set r->allowed to the list of methods that it is willing to handle. This bitvector is used to construct the "Allow:" header required for OPTIONS requests, and HTTP_METHOD_NOT_ALLOWED and HTTP_NOT_IMPLEMENTED status codes.

Since the default_handler deals with OPTIONS, all modules can usually decline to deal with OPTIONS. TRACE is always allowed, modules don't need to set it explicitly.

Since the default_handler will always handle a GET, a module which does not implement GET should probably return HTTP_METHOD_NOT_ALLOWED. Unfortunately this means that a Script GET handler can't be installed by mod_actions.

ap_method_list_t* request_rec::allowed_methods

List of allowed methods

apr_array_header_t* request_rec::allowed_xmethods

Array of extension methods

char* request_rec::ap_auth_type

If an authentication check was made, this gets set to the auth type.

char* request_rec::args

The QUERY_ARGS extracted from this request

int request_rec::assbackwards

HTTP/0.9, "simple" request (e.g. GET /foo
w/no headers)

ap_request_bnotes_t request_rec::bnotes

Request flags associated with this request. Use AP_REQUEST_GET_FLAGS() and AP_REQUEST_SET_FLAGS() to access the elements of this field.

apr_table_t* request_rec::body_table

For ap_body_to_table(): parsed body

apr_off_t request_rec::bytes_sent

body byte count, for easy access

char* request_rec::canonical_filename

The true filename stored in the filesystem, as in the true alpha case and alias correction, e.g. "Image.jpeg" not "IMAGE$1.JPE" on Windows. The core map_to_storage canonicalizes r->filename when they mismatch

int request_rec::chunked

sending chunked transfer-coding

apr_off_t request_rec::clength

The "real" content length

conn_rec* request_rec::connection

The connection to the client

const char* request_rec::content_encoding

How to encode the data

apr_array_header_t* request_rec::content_languages

Array of strings representing the content languages

const char* request_rec::content_type

The content-type for the current request

int request_rec::double_reverse

have we done double-reverse DNS? -1 yes/failure, 0 not yet, 1 yes/success TODO: 2 bit signed bitfield when this structure is compacted

int request_rec::eos_sent

A flag to determine if the eos bucket has been sent yet

apr_table_t* request_rec::err_headers_out

MIME header environment for the response, printed even on errors and persist across internal redirects

unsigned request_rec::expecting_100

is client waiting for a 100 response?

char* request_rec::filename

The filename on disk corresponding to this response

apr_finfo_t request_rec::finfo

finfo.protection (st_mode) set to zero if no such file

unsigned int request_rec::flushed

Whether the response has been flushed through the network, relevant at ap_run_log_transaction() time only. TODO: compact elsewhere

const char* request_rec::handler

The handler string that we use to call a handler function

int request_rec::header_only

HEAD request, as opposed to GET

apr_table_t* request_rec::headers_in

MIME header environment from the request

apr_table_t* request_rec::headers_out

MIME header environment for the response

const char* request_rec::hostname

Host, as set by full URI or Host: header. For literal IPv6 addresses, this does NOT include the surrounding [ ]

const struct htaccess_result* request_rec::htaccess

A linked list of the .htaccess configuration directives accessed by this request. N.B. always add to the head of the list, never to the end. that way, a sub request's list can (temporarily) point to a parent's list

struct ap_filter_t* request_rec::input_filters

A list of input filters to be used for this request

apr_thread_mutex_t* request_rec::invoke_mtx

Mutex protect callbacks registered with ap_mpm_register_timed_callback from being run before the original handler finishes running

apr_bucket_brigade* request_rec::kept_body

The optional kept body of the request.

const struct ap_logconf* request_rec::log

Optional request log level configuration. Will usually point to a server or per_dir config, i.e. must be copied before modifying

const char* request_rec::log_id

Id to identify request in access and error log. Set when the first error log entry for this request is generated.

request_rec* request_rec::main

Pointer to the main request if this is a sub-request (see http_request.h)

const char* request_rec::method

Request method (eg. GET, HEAD, POST, etc.)

int request_rec::method_number

M_GET, M_POST, etc.

apr_time_t request_rec::mtime

Last modified time of the requested resource

request_rec* request_rec::next

Pointer to the redirected request if this is an external redirect

int request_rec::no_cache

This response can not be cached

int request_rec::no_local_copy

There is no local copy of this response

apr_table_t* request_rec::notes

Notes from one module to another

struct ap_filter_t* request_rec::output_filters

A list of output filters to be used for this request

apr_uri_t request_rec::parsed_uri

A struct containing the components of URI

char* request_rec::path_info

The PATH_INFO extracted from this request

struct ap_conf_vector_t* request_rec::per_dir_config

Options set in config files, etc.

apr_pool_t* request_rec::pool

The pool associated with the request

request_rec* request_rec::prev

Pointer to the previous request if this is an internal redirect

struct ap_filter_t* request_rec::proto_input_filters

A list of protocol level input filters to be used for this request

int request_rec::proto_num

Protocol version number of protocol; 1.1 = 1001

struct ap_filter_t* request_rec::proto_output_filters

A list of protocol level output filters to be used for this request

const char* request_rec::protocol

Protocol string, as given to us, or HTTP/0.9

int request_rec::proxyreq

A proxy request (calculated during post_read_request/translate_name) possible values PROXYREQ_NONE, PROXYREQ_PROXY, PROXYREQ_REVERSE, PROXYREQ_RESPONSE

const char* request_rec::range

The Range: header

int request_rec::read_body

Method for reading the request body (eg. REQUEST_CHUNKED_ERROR, REQUEST_NO_BODY, REQUEST_CHUNKED_DECHUNK, etc...)

int request_rec::read_chunked

reading chunked transfer-coding

apr_off_t request_rec::read_length

Number of bytes that have been read from the request body

apr_off_t request_rec::remaining

Remaining bytes left to read from the request body

struct ap_conf_vector_t* request_rec::request_config

Notes on this request

apr_time_t request_rec::request_time

Time when the request started

apr_off_t request_rec::sent_bodyct

byte count in stream is for body

server_rec* request_rec::server

The virtual host for this request

int request_rec::status

Status line

const char* request_rec::status_line

Status line, if set by script

apr_table_t* request_rec::subprocess_env

Array of environment variables to be used for sub processes

int request_rec::taint

Mark the request as potentially tainted. This might become a bitfield if we identify different taints to be flagged. Always use ap_request_tainted() to check taint.

char* request_rec::the_request

First line of request

apr_table_t* request_rec::trailers_in

MIME trailer environment from the request

apr_table_t* request_rec::trailers_out

MIME trailer environment from the response

char* request_rec::unparsed_uri

The URI without any parsing performed

char* request_rec::uri

The path portion of the URI, or "/" if no path provided

int request_rec::used_path_info

Flag for the handler to accept or reject path_info on the current request. All modules should respect the AP_REQ_ACCEPT_PATH_INFO and AP_REQ_REJECT_PATH_INFO values, while AP_REQ_DEFAULT_PATH_INFO indicates they may follow existing conventions. This is set to the user's preference upon HOOK_VERY_FIRST of the fixups.

char* request_rec::user

If an authentication check was made, this gets set to the user name.

apr_sockaddr_t* request_rec::useragent_addr

remote address information from conn_rec, can be overridden if necessary by a module. This is the address that originated the request.

char* request_rec::useragent_host

Originator's DNS name, if known. NULL if DNS hasn't been checked, "" if it has and no address was found. N.B. Only access this though ap_get_useragent_host()

char* request_rec::useragent_ip
char* request_rec::vlist_validator

variant list validator (if negotiated)

The documentation for this struct was generated from the following file: