Apache2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
HTTP Daemon Routine
Collaboration diagram for HTTP Daemon Routine:

Modules

 Flags which indicate places where the server should stop for debugging.
 
 HTTP Status Codes
 
 HTTPD specific values of apr_status_t
 
 List of Methods recognized by the server
 Methods recognized (but not necessarily handled) by the server.
 
 Module Magic mime types
 
 Possible values for request_rec.read_body
 
 Possible values for request_rec.used_path_info
 
 Proxy request types
 

Data Structures

struct  ap_version_t
 The numeric version information is broken out into fields within this structure. More...
 
struct  ap_method_list_t
 Structure for handling HTTP methods. More...
 
struct  htaccess_result
 This represents the result of calling htaccess; these are cached for each request. More...
 
struct  process_rec
 A structure that represents one process. More...
 
struct  request_rec
 A structure that represents the current request. More...
 
struct  conn_rec
 Structure to store things which are per connection. More...
 
struct  conn_slave_rec
 
struct  conn_state_t
 A structure to contain connection state information. More...
 
struct  server_addr_rec
 A structure to be used for Per-vhost config. More...
 
struct  ap_logconf
 
struct  server_rec
 A structure to store information for each virtual server. More...
 
struct  ap_sload_t
 A structure to hold server load params. More...
 
struct  ap_loadavg_t
 A structure to hold various server loadavg. More...
 
struct  ap_form_pair_t
 

Macros

#define DOCUMENT_LOCATION   HTTPD_ROOT "/htdocs"
 
#define DYNAMIC_MODULE_LIMIT   256
 
#define DEFAULT_ADMIN   "[no address given]"
 
#define DEFAULT_ERRORLOG   "logs/error_log"
 
#define DEFAULT_ACCESS_FNAME   ".htaccess"
 
#define DEFAULT_PATH   "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin"
 
#define SUEXEC_BIN   HTTPD_ROOT "/bin/suexec"
 
#define DEFAULT_TIMEOUT   60
 
#define DEFAULT_KEEPALIVE_TIMEOUT   5
 
#define DEFAULT_KEEPALIVE   100
 
#define DEFAULT_LIMIT_REQUEST_LINE   8190
 
#define DEFAULT_LIMIT_REQUEST_FIELDSIZE   8190
 
#define DEFAULT_LIMIT_REQUEST_FIELDS   100
 
#define DEFAULT_LIMIT_BLANK_LINES   10
 
#define DEFAULT_ADD_DEFAULT_CHARSET_NAME   "iso-8859-1"
 
#define AP_SERVER_PROTOCOL   "HTTP/1.1"
 
#define AP_DEFAULT_INDEX   "index.html"
 
#define DOCTYPE_HTML_2_0
 
#define DOCTYPE_HTML_3_2
 
#define DOCTYPE_HTML_4_0S
 
#define DOCTYPE_HTML_4_0T
 
#define DOCTYPE_HTML_4_0F
 
#define DOCTYPE_XHTML_1_0S
 
#define DOCTYPE_XHTML_1_0T
 
#define DOCTYPE_XHTML_1_0F
 
#define HTTP_VERSION(major, minor)   (1000*(major)+(minor))
 
#define HTTP_VERSION_MAJOR(number)   ((number)/1000)
 
#define HTTP_VERSION_MINOR(number)   ((number)%1000)
 
#define DEFAULT_HTTP_PORT   80
 
#define DEFAULT_HTTPS_PORT   443
 
#define ap_is_default_port(port, r)   ((port) == ap_default_port(r))
 
#define ap_default_port(r)   ap_run_default_port(r)
 
#define ap_http_scheme(r)   ap_run_http_scheme(r)
 
#define MAX_STRING_LEN   HUGE_STRING_LEN
 
#define HUGE_STRING_LEN   8192
 
#define AP_IOBUFSIZE   8192
 
#define AP_MAX_REG_MATCH   10
 
#define AP_MAX_SENDFILE   16777216 /* 2^24 */
 
#define APEXIT_OK   0x0
 
#define APEXIT_INIT   0x2
 
#define APEXIT_CHILDINIT   0x3
 
#define APEXIT_CHILDSICK   0x7
 
#define APEXIT_CHILDFATAL   0xf
 
#define OK   0
 
#define DECLINED   -1
 
#define DONE   -2
 
#define SUSPENDED   -3
 
#define AP_NOBODY_WROTE   -100
 
#define AP_NOBODY_READ   -101
 
#define AP_FILTER_ERROR   -102
 
#define LF   10
 
#define CR   13
 
#define CRLF   "\015\012"
 
#define CRLF_ASCII   "\015\012"
 
#define DEFAULT_VHOST_ADDR   0xfffffffful
 
#define ap_escape_uri(ppool, path)   ap_os_escape_path(ppool,path,1)
 
#define ap_escape_html(p, s)   ap_escape_html2(p,s,0)
 
#define ap_assert(exp)   ((exp) ? (void)0 : ap_log_assert(#exp,__FILE__,__LINE__))
 
#define AP_DEBUG_ASSERT(exp)   ((void)0)
 
#define ap_strchr(s, c)   strchr(s, c)
 
#define ap_strchr_c(s, c)   strchr(s, c)
 
#define ap_strrchr(s, c)   strrchr(s, c)
 
#define ap_strrchr_c(s, c)   strrchr(s, c)
 
#define ap_strstr(s, c)   strstr(s, c)
 
#define ap_strstr_c(s, c)   strstr(s, c)
 
#define AP_NORESTART   APR_OS_START_USEERR + 1
 

Typedefs

typedef struct ap_method_list_t ap_method_list_t
 
typedef struct process_rec process_rec
 
typedef struct server_rec server_rec
 
typedef struct conn_rec conn_rec
 
typedef struct conn_slave_rec conn_slave_rec
 
typedef struct request_rec request_rec
 
typedef struct conn_state_t conn_state_t
 
typedef struct server_addr_rec server_addr_rec
 
typedef struct ap_sload_t ap_sload_t
 
typedef struct ap_loadavg_t ap_loadavg_t
 

Enumerations

enum  ap_conn_keepalive_e { AP_CONN_UNKNOWN, AP_CONN_CLOSE, AP_CONN_KEEPALIVE }
 Enumeration of connection keepalive options. More...
 
enum  conn_state_e {
  CONN_STATE_CHECK_REQUEST_LINE_READABLE, CONN_STATE_READ_REQUEST_LINE, CONN_STATE_HANDLER, CONN_STATE_WRITE_COMPLETION,
  CONN_STATE_SUSPENDED, CONN_STATE_LINGER, CONN_STATE_LINGER_NORMAL, CONN_STATE_LINGER_SHORT
}
 
enum  conn_sense_e { CONN_SENSE_DEFAULT, CONN_SENSE_WANT_READ, CONN_SENSE_WANT_WRITE }
 

Functions

void ap_get_server_revision (ap_version_t *version)
 
const char * ap_get_server_banner (void)
 
const char * ap_get_server_description (void)
 
void ap_add_version_component (apr_pool_t *pconf, const char *component)
 
const char * ap_get_server_built (void)
 
const char * ap_context_document_root (request_rec *r)
 
const char * ap_context_prefix (request_rec *r)
 
void ap_set_context_info (request_rec *r, const char *prefix, const char *document_root)
 
void ap_set_document_root (request_rec *r, const char *document_root)
 
char * ap_field_noparam (apr_pool_t *p, const char *intype)
 
char * ap_ht_time (apr_pool_t *p, apr_time_t t, const char *fmt, int gmt)
 
char * ap_getword (apr_pool_t *p, const char **line, char stop)
 
char * ap_getword_nc (apr_pool_t *p, char **line, char stop)
 
char * ap_getword_white (apr_pool_t *p, const char **line)
 
char * ap_getword_white_nc (apr_pool_t *p, char **line)
 
char * ap_getword_nulls (apr_pool_t *p, const char **line, char stop)
 
char * ap_getword_nulls_nc (apr_pool_t *p, char **line, char stop)
 
char * ap_getword_conf (apr_pool_t *p, const char **line)
 
char * ap_getword_conf_nc (apr_pool_t *p, char **line)
 
char * ap_getword_conf2 (apr_pool_t *p, const char **line)
 
char * ap_getword_conf2_nc (apr_pool_t *p, char **line)
 
const char * ap_resolve_env (apr_pool_t *p, const char *word)
 
const char * ap_size_list_item (const char **field, int *len)
 
char * ap_get_list_item (apr_pool_t *p, const char **field)
 
int ap_find_list_item (apr_pool_t *p, const char *line, const char *tok)
 
int ap_find_etag_weak (apr_pool_t *p, const char *line, const char *tok)
 
int ap_find_etag_strong (apr_pool_t *p, const char *line, const char *tok)
 
const char * ap_scan_http_field_content (const char *ptr)
 
const char * ap_scan_http_token (const char *ptr)
 
const char * ap_scan_http_uri_safe (const char *ptr)
 
char * ap_get_http_token (apr_pool_t *p, const char **ptr)
 
const char * ap_parse_token_list_strict (apr_pool_t *p, const char *tok, apr_array_header_t **tokens, int skip_invalid)
 
char * ap_get_token (apr_pool_t *p, const char **accept_line, int accept_white)
 
int ap_find_token (apr_pool_t *p, const char *line, const char *tok)
 
int ap_find_last_token (apr_pool_t *p, const char *line, const char *tok)
 
int ap_is_url (const char *u)
 
int ap_unescape_all (char *url)
 
int ap_unescape_url (char *url)
 
int ap_unescape_url_keep2f (char *url, int decode_slashes)
 
int ap_unescape_urlencoded (char *query)
 
void ap_no2slash (char *name) AP_FN_ATTR_NONNULL_ALL
 
void ap_getparents (char *name) AP_FN_ATTR_NONNULL_ALL
 
char * ap_escape_path_segment (apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
 
char * ap_escape_path_segment_buffer (char *c, const char *s) AP_FN_ATTR_NONNULL_ALL
 
char * ap_os_escape_path (apr_pool_t *p, const char *path, int partial) AP_FN_ATTR_NONNULL_ALL
 
char * ap_escape_urlencoded (apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
 
char * ap_escape_urlencoded_buffer (char *c, const char *s) AP_FN_ATTR_NONNULL_ALL
 
char * ap_escape_html2 (apr_pool_t *p, const char *s, int toasc) AP_FN_ATTR_NONNULL_ALL
 
char * ap_escape_logitem (apr_pool_t *p, const char *str) AP_FN_ATTR_NONNULL((1))
 
apr_size_t ap_escape_errorlog_item (char *dest, const char *source, apr_size_t buflen) AP_FN_ATTR_NONNULL((1))
 
char * ap_construct_server (apr_pool_t *p, const char *hostname, apr_port_t port, const request_rec *r) AP_FN_ATTR_NONNULL((1
 
char char * ap_escape_shell_cmd (apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
 
int ap_count_dirs (const char *path) AP_FN_ATTR_NONNULL_ALL
 
char * ap_make_dirstr_prefix (char *d, const char *s, int n) AP_FN_ATTR_NONNULL_ALL
 
char * ap_make_dirstr_parent (apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
 
char * ap_make_full_path (apr_pool_t *a, const char *dir, const char *f) AP_FN_ATTR_NONNULL_ALL
 
int ap_os_is_path_absolute (apr_pool_t *p, const char *dir) AP_FN_ATTR_NONNULL_ALL
 
int ap_is_matchexp (const char *str) AP_FN_ATTR_NONNULL_ALL
 
int ap_strcmp_match (const char *str, const char *expected) AP_FN_ATTR_NONNULL_ALL
 
int ap_strcasecmp_match (const char *str, const char *expected) AP_FN_ATTR_NONNULL_ALL
 
char * ap_strcasestr (const char *s1, const char *s2) AP_FN_ATTR_NONNULL_ALL
 
const char * ap_stripprefix (const char *bigstring, const char *prefix) AP_FN_ATTR_NONNULL_ALL
 
char * ap_pbase64decode (apr_pool_t *p, const char *bufcoded)
 
char * ap_pbase64encode (apr_pool_t *p, char *string)
 
ap_regex_tap_pregcomp (apr_pool_t *p, const char *pattern, int cflags)
 
void ap_pregfree (apr_pool_t *p, ap_regex_t *reg)
 
char * ap_pregsub (apr_pool_t *p, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[])
 
apr_status_t ap_pregsub_ex (apr_pool_t *p, char **result, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[], apr_size_t maxlen)
 
void ap_content_type_tolower (char *s)
 
void ap_str_tolower (char *s)
 
void ap_str_toupper (char *s)
 
int ap_ind (const char *str, char c)
 
int ap_rind (const char *str, char c)
 
char * ap_escape_quotes (apr_pool_t *p, const char *instring)
 
char * ap_append_pid (apr_pool_t *p, const char *string, const char *delim)
 
apr_status_t ap_timeout_parameter_parse (const char *timeout_parameter, apr_interval_time_t *timeout, const char *default_time_unit)
 
int ap_request_has_body (request_rec *r)
 
apr_status_t ap_pstr2_alnum (apr_pool_t *p, const char *src, const char **dest)
 
apr_status_t ap_str2_alnum (const char *src, char *dest)
 
int ap_parse_form_data (request_rec *r, struct ap_filter_t *f, apr_array_header_t **ptr, apr_size_t num, apr_size_t size)
 
int ap_is_rdirectory (apr_pool_t *p, const char *name)
 
int ap_is_directory (apr_pool_t *p, const char *name)
 
char * ap_get_local_host (apr_pool_t *p)
 
void ap_log_assert (const char *szExp, const char *szFile, int nLine) __attribute__((noreturn))
 
const char * ap_psignature (const char *prefix, request_rec *r)
 
char * ap_strchr (char *s, int c)
 
const char * ap_strchr_c (const char *s, int c)
 
char * ap_strrchr (char *s, int c)
 
const char * ap_strrchr_c (const char *s, int c)
 
char * ap_strstr (char *s, const char *c)
 
const char * ap_strstr_c (const char *s, const char *c)
 
voidap_palloc_debug (apr_pool_t *p, apr_size_t size)
 
voidap_pcalloc_debug (apr_pool_t *p, apr_size_t size)
 
void ap_random_insecure_bytes (void *buf, apr_size_t size)
 
apr_uint32_t ap_random_pick (apr_uint32_t min, apr_uint32_t max)
 
void ap_abort_on_oom (void) __attribute__((noreturn))
 
voidap_malloc (size_t size) __attribute__((malloc)) AP_FN_ATTR_ALLOC_SIZE(1)
 
voidap_calloc (size_t nelem, size_t size) __attribute__((malloc)) AP_FN_ATTR_ALLOC_SIZE2(1
 
void voidap_realloc (void *ptr, size_t size) AP_FN_ATTR_WARN_UNUSED_RESULT AP_FN_ATTR_ALLOC_SIZE(2)
 
void ap_get_sload (ap_sload_t *ld) AP_FN_ATTR_NONNULL_ALL
 
void ap_get_loadavg (ap_loadavg_t *ld) AP_FN_ATTR_NONNULL_ALL
 
void ap_bin2hex (const void *src, apr_size_t srclen, char *dest) AP_FN_ATTR_NONNULL_ALL
 
int ap_has_cntrl (const char *str) AP_FN_ATTR_NONNULL_ALL
 
apr_status_t ap_password_validate (request_rec *r, const char *username, const char *passwd, const char *hash)
 
char * ap_get_exec_line (apr_pool_t *p, const char *cmd, const char *const *argv)
 
int ap_array_str_index (const apr_array_header_t *array, const char *s, int start)
 
int ap_array_str_contains (const apr_array_header_t *array, const char *s)
 
int ap_cstr_casecmp (const char *s1, const char *s2)
 
int ap_cstr_casecmpn (const char *s1, const char *s2, apr_size_t n)
 

Detailed Description

Macro Definition Documentation

#define ap_assert (   exp)    ((exp) ? (void)0 : ap_log_assert(#exp,__FILE__,__LINE__))

Internal Assert function

#define AP_DEBUG_ASSERT (   exp)    ((void)0)

Redefine assert() to something more useful for an Apache...

Use ap_assert() if the condition should always be checked. Use AP_DEBUG_ASSERT() if the condition should only be checked when AP_DEBUG is defined.

#define AP_DEFAULT_INDEX   "index.html"

Define this to be what your HTML directory content files are called

#define ap_default_port (   r)    ap_run_default_port(r)

Get the default port for a request (which depends on the scheme).

Parameters
rThe request
#define ap_escape_html (   p,
 
)    ap_escape_html2(p,s,0)

Escape an html string

Parameters
pThe pool to allocate from
sThe html to escape
Returns
The escaped string
Deprecated:
Replaced by apr_pescape_entity() in APR
#define ap_escape_uri (   ppool,
  path 
)    ap_os_escape_path(ppool,path,1)
#define AP_FILTER_ERROR   -102

Returned by any filter if the filter chain encounters an error and has already dealt with the error response.

#define ap_http_scheme (   r)    ap_run_http_scheme(r)

Get the scheme for a request.

Parameters
rThe request
#define AP_IOBUFSIZE   8192

The size of the server's internal read-write buffers

#define ap_is_default_port (   port,
  r 
)    ((port) == ap_default_port(r))

Check whether port is the default port for the request r.

Parameters
portThe port number
rThe request
See Also
ap_default_port
#define AP_MAX_REG_MATCH   10

The max number of regex captures that can be expanded by ap_pregsub

#define AP_MAX_SENDFILE   16777216 /* 2^24 */

APR_HAS_LARGE_FILES introduces the problem of spliting sendfile into multiple buckets, no greater than MAX(apr_size_t), and more granular than that in case the brigade code/filters attempt to read it directly.

16mb is an invention, no idea if it is reasonable.

#define AP_NOBODY_READ   -101

Returned by the bottom-most filter if no data was read.

See Also
ap_get_brigade().
#define AP_NOBODY_WROTE   -100

Returned by the bottom-most filter if no data was written.

See Also
ap_pass_brigade().
#define AP_NORESTART   APR_OS_START_USEERR + 1
#define AP_SERVER_PROTOCOL   "HTTP/1.1"

default HTTP Server protocol

#define ap_strchr (   s,
 
)    strchr(s, c)

use this instead of strchr

#define ap_strchr_c (   s,
 
)    strchr(s, c)

use this instead of strchr

#define ap_strrchr (   s,
 
)    strrchr(s, c)

use this instead of strrchr

#define ap_strrchr_c (   s,
 
)    strrchr(s, c)

use this instead of strrchr

#define ap_strstr (   s,
 
)    strstr(s, c)

use this instead of strrstr

#define ap_strstr_c (   s,
 
)    strstr(s, c)

use this instead of strrstr

#define APEXIT_CHILDFATAL   0xf

A fatal error, resulting in the whole server aborting. If a child exits with this error, the parent process considers this a server-wide fatal error and aborts.

#define APEXIT_CHILDINIT   0x3

The child died during its init sequence

#define APEXIT_CHILDSICK   0x7

The child exited due to a resource shortage. The parent should limit the rate of forking until the situation is resolved.

#define APEXIT_INIT   0x2

A fatal error arising during the server's init sequence

#define APEXIT_OK   0x0

MPM child process exit status values The MPM parent process may check the status to see if special error handling is required.a normal exit

#define CR   13

carrige return

#define CRLF   "\015\012"

carrige return /Line Feed Combo

#define CRLF_ASCII   "\015\012"

Useful for common code with either platform charset.

#define DECLINED   -1

Module declines to handle

#define DEFAULT_ACCESS_FNAME   ".htaccess"

Define this to be what your per-directory security files are called

#define DEFAULT_ADD_DEFAULT_CHARSET_NAME   "iso-8859-1"

The default default character set name to add if AddDefaultCharset is enabled. Overridden with AddDefaultCharsetName.

#define DEFAULT_ADMIN   "[no address given]"

Default administrator's address

#define DEFAULT_ERRORLOG   "logs/error_log"

The name of the log files

#define DEFAULT_HTTP_PORT   80

default HTTP Port

#define DEFAULT_HTTPS_PORT   443

default HTTPS Port

#define DEFAULT_KEEPALIVE   100

The number of requests to entertain per connection

#define DEFAULT_KEEPALIVE_TIMEOUT   5

The timeout for waiting for keepalive timeout until next request

#define DEFAULT_LIMIT_BLANK_LINES   10

default/hard limit on number of leading/trailing empty lines

#define DEFAULT_LIMIT_REQUEST_FIELDS   100

default limit on number of request header fields

#define DEFAULT_LIMIT_REQUEST_FIELDSIZE   8190

default limit on bytes in any one header field

#define DEFAULT_LIMIT_REQUEST_LINE   8190

default limit on bytes in Request-Line (Method+URI+HTTP-version)

#define DEFAULT_PATH   "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin"

The name of the server config file The default path for CGI scripts if none is currently set

#define DEFAULT_TIMEOUT   60

The timeout for waiting for messages

#define DEFAULT_VHOST_ADDR   0xfffffffful

The address 255.255.255.255, when used as a virtualhost address, will become the "default" server when the ip doesn't match other vhosts.

#define DOCTYPE_HTML_2_0
Value:
"<!DOCTYPE HTML PUBLIC \"-//IETF//" \
"DTD HTML 2.0//EN\">\n"

The name of the MIME types file HTML 2.0 Doctype

#define DOCTYPE_HTML_3_2
Value:
"<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 3.2 Final//EN\">\n"

HTML 3.2 Doctype

#define DOCTYPE_HTML_4_0F
Value:
"<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0 Frameset//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/frameset.dtd\">\n"

HTML 4.0 Frameset Doctype

#define DOCTYPE_HTML_4_0S
Value:
"<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"

HTML 4.0 Strict Doctype

#define DOCTYPE_HTML_4_0T
Value:
"<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0 Transitional//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n"

HTML 4.0 Transitional Doctype

#define DOCTYPE_XHTML_1_0F
Value:
"<!DOCTYPE html PUBLIC \"-//W3C//" \
"DTD XHTML 1.0 Frameset//EN\"\n" \
"\"http://www.w3.org/TR/xhtml1/DTD/" \
"xhtml1-frameset.dtd\">"

XHTML 1.0 Frameset Doctype

#define DOCTYPE_XHTML_1_0S
Value:
"<!DOCTYPE html PUBLIC \"-//W3C//" \
"DTD XHTML 1.0 Strict//EN\"\n" \
"\"http://www.w3.org/TR/xhtml1/DTD/" \
"xhtml1-strict.dtd\">\n"

XHTML 1.0 Strict Doctype

#define DOCTYPE_XHTML_1_0T
Value:
"<!DOCTYPE html PUBLIC \"-//W3C//" \
"DTD XHTML 1.0 Transitional//EN\"\n" \
"\"http://www.w3.org/TR/xhtml1/DTD/" \
"xhtml1-transitional.dtd\">\n"

XHTML 1.0 Transitional Doctype

#define DOCUMENT_LOCATION   HTTPD_ROOT "/htdocs"

Define this to be the default server home dir. Most things later in this file with a relative pathname will have this added. Default location of documents. Can be overridden by the DocumentRoot directive.

#define DONE   -2

Module has served the response completely

  • it's safe to die() with no more output
#define DYNAMIC_MODULE_LIMIT   256

Maximum number of dynamically loaded modules

#define HTTP_VERSION (   major,
  minor 
)    (1000*(major)+(minor))

Internal representation for a HTTP protocol number, e.g., HTTP/1.1

#define HTTP_VERSION_MAJOR (   number)    ((number)/1000)

Major part of HTTP protocol

#define HTTP_VERSION_MINOR (   number)    ((number)%1000)

Minor part of HTTP protocol

#define HUGE_STRING_LEN   8192

The length of a Huge string

#define LF   10

linefeed

#define MAX_STRING_LEN   HUGE_STRING_LEN

The default string length

#define OK   0

Module has handled this stage.

#define SUEXEC_BIN   HTTPD_ROOT "/bin/suexec"

The path to the suExec wrapper, can be overridden in Configuration

#define SUSPENDED   -3

Module will handle the remainder of the request. The core will never invoke the request again,

Typedef Documentation

typedef struct ap_loadavg_t ap_loadavg_t
typedef struct ap_sload_t ap_sload_t
typedef struct conn_rec conn_rec

A structure that represents one connection

A structure that represents one slave connection

typedef struct conn_state_t conn_state_t

A structure that represents the status of the current connection

typedef struct process_rec process_rec

A structure that represents one process

typedef struct request_rec request_rec

A structure that represents the current request

typedef struct server_rec server_rec

A structure that represents a virtual server

Enumeration Type Documentation

Enumeration of connection keepalive options.

Enumerator
AP_CONN_UNKNOWN 
AP_CONN_CLOSE 
AP_CONN_KEEPALIVE 
Enumerator
CONN_SENSE_DEFAULT 
CONN_SENSE_WANT_READ 
CONN_SENSE_WANT_WRITE 

Enumeration of connection states The two states CONN_STATE_LINGER_NORMAL and CONN_STATE_LINGER_SHORT may only be set by the MPM. Use CONN_STATE_LINGER outside of the MPM.

Enumerator
CONN_STATE_CHECK_REQUEST_LINE_READABLE 
CONN_STATE_READ_REQUEST_LINE 
CONN_STATE_HANDLER 
CONN_STATE_WRITE_COMPLETION 
CONN_STATE_SUSPENDED 
CONN_STATE_LINGER 
CONN_STATE_LINGER_NORMAL 
CONN_STATE_LINGER_SHORT 

Function Documentation

void ap_abort_on_oom ( void  )

Abort with a error message signifying out of memory

void ap_add_version_component ( apr_pool_t pconf,
const char *  component 
)

Add a component to the server description and banner strings

Parameters
pconfThe pool to allocate the component from
componentThe string to add
char* ap_append_pid ( apr_pool_t p,
const char *  string,
const char *  delim 
)

Given a string, append the PID deliminated by delim. Usually used to create a pid-appended filepath name (eg: /a/b/foo -> /a/b/foo.6726). A function, and not a macro, to avoid unistd.h dependency

Parameters
pThe pool to allocate memory from
stringThe string to append the PID to
delimThe string to use to deliminate the string from the PID
Returns
A copy of the string with the PID appended
int ap_array_str_contains ( const apr_array_header_t array,
const char *  s 
)

Check if the string is member of the given array by strcmp.

Parameters
arrayThe array the check
sThe string to find
Returns
!=0 iff string is member of array (via strcmp)
int ap_array_str_index ( const apr_array_header_t array,
const char *  s,
int  start 
)

Get the first index of the string in the array or -1 if not found. Start searching a start.

Parameters
arrayThe array the check
sThe string to find
startStart index for search. If start is out of bounds (negative or equal to array length or greater), -1 will be returned.
Returns
index of string in array or -1
void ap_bin2hex ( const void src,
apr_size_t  srclen,
char *  dest 
)

Convert binary data into a hex string

Parameters
srcpointer to the data
srclenlength of the data
destpointer to buffer of length (2 * srclen + 1). The resulting string will be NUL-terminated.
Deprecated:
Replaced by apr_escape_hex() in APR
void* ap_calloc ( size_t  nelem,
size_t  size 
)

Wrapper for calloc() that calls ap_abort_on_oom() if out of memory

Parameters
nelemnumber of elements to allocate memory for
sizesize of a single element
Returns
pointer to the allocated memory
Note
ap_calloc may be implemented as a macro
char* ap_construct_server ( apr_pool_t p,
const char *  hostname,
apr_port_t  port,
const request_rec r 
)

Construct a full hostname

Parameters
pThe pool to allocate from
hostnameThe hostname of the server
portThe port the server is running on
rThe current request
Returns
The server's hostname
void ap_content_type_tolower ( char *  s)

We want to downcase the type/subtype for comparison purposes but nothing else because ;parameter=foo values are case sensitive.

Parameters
sThe content-type to convert to lowercase
const char* ap_context_document_root ( request_rec r)

Get the context_document_root for a request. This is a generalization of the document root, which is too limited in the presence of mappers like mod_userdir and mod_alias. The context_document_root is the directory on disk that maps to the context_prefix URI prefix.

Parameters
rThe request
Note
For resources that do not map to the file system or for very complex mappings, this information may still be wrong.
const char* ap_context_prefix ( request_rec r)

Get the context_prefix for a request. The context_prefix URI prefix maps to the context_document_root on disk.

Parameters
rThe request
int ap_count_dirs ( const char *  path)

Count the number of directories in a path

Parameters
pathThe path to count
Returns
The number of directories
int ap_cstr_casecmp ( const char *  s1,
const char *  s2 
)

Perform a case-insensitive comparison of two strings atr1 and atr2, treating upper and lower case values of the 26 standard C/POSIX alphabetic characters as equivalent. Extended latin characters outside of this set are treated as unique octets, irrespective of the current locale.

Returns in integer greater than, equal to, or less than 0, according to whether str1 is considered greater than, equal to, or less than str2.

Note
Same code as apr_cstr_casecmp, which arrives in APR 1.6
int ap_cstr_casecmpn ( const char *  s1,
const char *  s2,
apr_size_t  n 
)

Perform a case-insensitive comparison of two strings atr1 and atr2, treating upper and lower case values of the 26 standard C/POSIX alphabetic characters as equivalent. Extended latin characters outside of this set are treated as unique octets, irrespective of the current locale.

Returns in integer greater than, equal to, or less than 0, according to whether str1 is considered greater than, equal to, or less than str2.

Note
Same code as apr_cstr_casecmpn, which arrives in APR 1.6
apr_size_t ap_escape_errorlog_item ( char *  dest,
const char *  source,
apr_size_t  buflen 
)

Escape a string for logging into the error log (without a pool)

Parameters
destThe buffer to write to
sourceThe string to escape
buflenThe buffer size for the escaped string (including "\0")
Returns
The len of the escaped string (always < maxlen)
Deprecated:
Replaced by apr_escape_echo() in APR
char* ap_escape_html2 ( apr_pool_t p,
const char *  s,
int  toasc 
)

Escape an html string

Parameters
pThe pool to allocate from
sThe html to escape
toascWhether to escape all non-ASCII chars to &#nnn;
Returns
The escaped string
Deprecated:
Replaced by apr_pescape_entity() in APR
char* ap_escape_logitem ( apr_pool_t p,
const char *  str 
)

Escape a string for logging

Parameters
pThe pool to allocate from
strThe string to escape
Returns
The escaped string
Deprecated:
Replaced by apr_pescape_echo() in APR
char* ap_escape_path_segment ( apr_pool_t p,
const char *  s 
)

Escape a path segment, as defined in RFC 1808

Parameters
pThe pool to allocate from
sThe path to convert
Returns
The converted URL
Deprecated:
Replaced by apr_pescape_path_segment() in APR
char* ap_escape_path_segment_buffer ( char *  c,
const char *  s 
)

Escape a path segment, as defined in RFC 1808, to a preallocated buffer.

Parameters
cThe preallocated buffer to write to
sThe path to convert
Returns
The converted URL (c)
Deprecated:
Replaced by apr_escape_path_segment() in APR
char* ap_escape_quotes ( apr_pool_t p,
const char *  instring 
)

Given a string, replace any bare " with \" .

Parameters
pThe pool to allocate memory from
instringThe string to search for "
Returns
A copy of the string with escaped quotes
Deprecated:
Replaced by apr_pescape_echo() in APR
char char* ap_escape_shell_cmd ( apr_pool_t p,
const char *  s 
)

Escape a shell command

Parameters
pThe pool to allocate from
sThe command to escape
Returns
The escaped shell command
Deprecated:
Replaced with apr_escape_shell() in APR
char* ap_escape_urlencoded ( apr_pool_t p,
const char *  s 
)

Escape a string as application/x-www-form-urlencoded

Parameters
pThe pool to allocate from
sThe path to convert
Returns
The converted URL
Deprecated:
Replaced by apr_pescape_url() in APR
char* ap_escape_urlencoded_buffer ( char *  c,
const char *  s 
)

Escape a string as application/x-www-form-urlencoded, to a preallocated buffer

Parameters
cThe preallocated buffer to write to
sThe path to convert
Returns
The converted URL (c)
Deprecated:
Replaced by apr_escape_url() in APR
char* ap_field_noparam ( apr_pool_t p,
const char *  intype 
)

Examine a field value (such as a media-/content-type) string and return it sans any parameters; e.g., strip off any ';charset=foo' and the like.

Parameters
pPool to allocate memory from
intypeThe field to examine
Returns
A copy of the field minus any parameters
int ap_find_etag_strong ( apr_pool_t p,
const char *  line,
const char *  tok 
)

Do a strong ETag comparison within an HTTP field value list.

Parameters
pThe pool to allocate from
lineThe field value list to search
tokThe token to search for
Returns
1 if found, 0 if not found.
int ap_find_etag_weak ( apr_pool_t p,
const char *  line,
const char *  tok 
)

Do a weak ETag comparison within an HTTP field value list.

Parameters
pThe pool to allocate from
lineThe field value list to search
tokThe token to search for
Returns
1 if found, 0 if not found.
int ap_find_last_token ( apr_pool_t p,
const char *  line,
const char *  tok 
)

find http tokens from the end of the line

Parameters
pThe pool to allocate from
lineThe line to find the token
tokThe token to find
Returns
1 if the token is found, 0 otherwise
int ap_find_list_item ( apr_pool_t p,
const char *  line,
const char *  tok 
)

Find an item in canonical form (lowercase, no extra spaces) within an HTTP field value list.

Parameters
pThe pool to allocate from
lineThe field value list to search
tokThe token to search for
Returns
1 if found, 0 if not found.
int ap_find_token ( apr_pool_t p,
const char *  line,
const char *  tok 
)

Find http tokens, see the definition of token from RFC2068

Parameters
pThe pool to allocate from
lineThe line to find the token
tokThe token to find
Returns
1 if the token is found, 0 otherwise
char* ap_get_exec_line ( apr_pool_t p,
const char *  cmd,
const char *const *  argv 
)

Short function to execute a command and return the first line of output minus \r \n. Useful for "obscuring" passwords via exec calls

Parameters
pthe pool to allocate from
cmdthe command to execute
argvthe arguments to pass to the cmd
Returns
ptr to characters or NULL on any error
char* ap_get_http_token ( apr_pool_t p,
const char **  ptr 
)
char* ap_get_list_item ( apr_pool_t p,
const char **  field 
)

Retrieve an HTTP header field list item, as separated by a comma, while stripping insignificant whitespace and lowercasing anything not in a quoted string or comment.

Parameters
pThe pool to allocate from
fieldThe field to retrieve
Returns
The return value is a new string containing the converted list item (or NULL if none) and the address pointed to by field is shifted to the next non-comma, non-whitespace.
void ap_get_loadavg ( ap_loadavg_t ld)

Get server load averages (ala getloadavg)

Parameters
ldstruct to populate: -1 in fields means error
char* ap_get_local_host ( apr_pool_t p)

Determine the local host name for the current machine

Parameters
pThe pool to allocate from
Returns
A copy of the local host name
const char* ap_get_server_banner ( void  )

Get the server banner in a form suitable for sending over the network, with the level of information controlled by the ServerTokens directive.

Returns
The server banner
const char* ap_get_server_built ( void  )

Get the date a time that the server was built

Returns
The server build time string
const char* ap_get_server_description ( void  )

Get the server description in a form suitable for local displays, status reports, or logging. This includes the detailed server version and information about some modules. It is not affected by the ServerTokens directive.

Returns
The server description
void ap_get_server_revision ( ap_version_t version)

Return httpd's version information in a numeric form.

Parameters
versionPointer to a version structure for returning the version information.
void ap_get_sload ( ap_sload_t ld)

Get server load params

Parameters
ldstruct to populate: -1 in fields means error
char* ap_get_token ( apr_pool_t p,
const char **  accept_line,
int  accept_white 
)

Retrieve a token, spacing over it and adjusting the pointer to the first non-white byte afterwards. Note that these tokens are delimited by semis and commas and can also be delimited by whitespace at the caller's option.

Parameters
pThe pool to allocate from
accept_lineThe line to retrieve the token from (adjusted afterwards)
accept_whiteIs it delimited by whitespace
Returns
the token
void ap_getparents ( char *  name)

Remove all ./ and xx/../ substrings from a file name. Also remove any leading ../ or /../ substrings.

Parameters
namethe file name to parse
char* ap_getword ( apr_pool_t p,
const char **  line,
char  stop 
)

Get the characters until the first occurrence of a specified character

Parameters
pThe pool to allocate memory from
lineThe string to get the characters from
stopThe character to stop at
Returns
A copy of the characters up to the first stop character
char* ap_getword_conf ( apr_pool_t p,
const char **  line 
)

Get the second word in the string paying attention to quoting

Parameters
pThe pool to allocate from
lineThe line to traverse
Returns
A copy of the string
char* ap_getword_conf2 ( apr_pool_t p,
const char **  line 
)

Get the second word in the string paying attention to quoting, with {...} supported as well as "..." and '...'

Parameters
pThe pool to allocate from
lineThe line to traverse
Returns
A copy of the string
char* ap_getword_conf2_nc ( apr_pool_t p,
char **  line 
)

Get the second word in the string paying attention to quoting, with {...} supported as well as "..." and '...'

Parameters
pThe pool to allocate from
lineThe line to traverse
Returns
A copy of the string
Note
The same as ap_getword_conf2(), except it doesn't use const char **.
char* ap_getword_conf_nc ( apr_pool_t p,
char **  line 
)

Get the second word in the string paying attention to quoting

Parameters
pThe pool to allocate from
lineThe line to traverse
Returns
A copy of the string
Note
The same as ap_getword_conf(), except it doesn't use const char **.
char* ap_getword_nc ( apr_pool_t p,
char **  line,
char  stop 
)

Get the characters until the first occurrence of a specified character

Parameters
pThe pool to allocate memory from
lineThe string to get the characters from
stopThe character to stop at
Returns
A copy of the characters up to the first stop character
Note
This is the same as ap_getword(), except it doesn't use const char **.
char* ap_getword_nulls ( apr_pool_t p,
const char **  line,
char  stop 
)

Get all characters from the first occurrence of stop to the first "\0"

Parameters
pThe pool to allocate memory from
lineThe line to traverse
stopThe character to start at
Returns
A copy of all characters after the first occurrence of the specified character
char* ap_getword_nulls_nc ( apr_pool_t p,
char **  line,
char  stop 
)

Get all characters from the first occurrence of stop to the first "\0"

Parameters
pThe pool to allocate memory from
lineThe line to traverse
stopThe character to start at
Returns
A copy of all characters after the first occurrence of the specified character
Note
The same as ap_getword_nulls(), except it doesn't use const char **.
char* ap_getword_white ( apr_pool_t p,
const char **  line 
)

Get the first word from a given string. A word is defined as all characters up to the first whitespace.

Parameters
pThe pool to allocate memory from
lineThe string to traverse
Returns
The first word in the line
char* ap_getword_white_nc ( apr_pool_t p,
char **  line 
)

Get the first word from a given string. A word is defined as all characters up to the first whitespace.

Parameters
pThe pool to allocate memory from
lineThe string to traverse
Returns
The first word in the line
Note
The same as ap_getword_white(), except it doesn't use const char**
int ap_has_cntrl ( const char *  str)

Check if string contains a control character

Parameters
strthe string to check
Returns
1 if yes, 0 if no control characters
char* ap_ht_time ( apr_pool_t p,
apr_time_t  t,
const char *  fmt,
int  gmt 
)

Convert a time from an integer into a string in a specified format

Parameters
pThe pool to allocate memory from
tThe time to convert
fmtThe format to use for the conversion
gmtConvert the time for GMT?
Returns
The string that represents the specified time
int ap_ind ( const char *  str,
char  c 
)

Search a string from left to right for the first occurrence of a specific character

Parameters
strThe string to search
cThe character to search for
Returns
The index of the first occurrence of c in str
int ap_is_directory ( apr_pool_t p,
const char *  name 
)

Given the name of an object in the file system determine if it is a directory - this version is symlink aware

Parameters
pThe pool to allocate from
nameThe name of the object to check
Returns
1 if it is a directory, 0 otherwise
int ap_is_matchexp ( const char *  str)

Does the provided string contain wildcard characters? This is useful for determining if the string should be passed to strcmp_match or to strcmp. The only wildcard characters recognized are '?' and '*'

Parameters
strThe string to check
Returns
1 if the string has wildcards, 0 otherwise
int ap_is_rdirectory ( apr_pool_t p,
const char *  name 
)

Given the name of an object in the file system determine if it is a directory

Parameters
pThe pool to allocate from
nameThe name of the object to check
Returns
1 if it is a directory, 0 otherwise
int ap_is_url ( const char *  u)

Check for an Absolute URI syntax

Parameters
uThe string to check
Returns
1 if URI, 0 otherwise
void ap_log_assert ( const char *  szExp,
const char *  szFile,
int  nLine 
)

Log an assertion to the error log

Parameters
szExpThe assertion that failed
szFileThe file the assertion is in
nLineThe line the assertion is defined on
char* ap_make_dirstr_parent ( apr_pool_t p,
const char *  s 
)

Return the parent directory name (including trailing /) of the file s

Parameters
pThe pool to allocate from
sThe file to get the parent of
Returns
A copy of the file's parent directory
char* ap_make_dirstr_prefix ( char *  d,
const char *  s,
int  n 
)

Copy at most n leading directories of s into d. d should be at least as large as s plus 1 extra byte

Parameters
dThe location to copy to
sThe location to copy from
nThe number of directories to copy
Returns
value is the ever useful pointer to the trailing "\0" of d
Note
on platforms with drive letters, n = 0 returns the "/" root, whereas n = 1 returns the "d:/" root. On all other platforms, n = 0 returns the empty string.
char* ap_make_full_path ( apr_pool_t a,
const char *  dir,
const char *  f 
)

Given a directory and filename, create a single path from them. This function is smart enough to ensure that there is a single '/' between the directory and file names

Parameters
aThe pool to allocate from
dirThe directory name
fThe filename
Returns
A copy of the full path, with one byte of extra space after the NUL to allow the caller to add a trailing '/'.
Note
Never consider using this function if you are dealing with filesystem names that need to remain canonical, unless you are merging an apr_dir_read path and returned filename. Otherwise, the result is not canonical.
void* ap_malloc ( size_t  size)

Wrapper for malloc() that calls ap_abort_on_oom() if out of memory

Parameters
sizesize of the memory block
Returns
pointer to the allocated memory
Note
ap_malloc may be implemented as a macro
void ap_no2slash ( char *  name)

Convert all double slashes to single slashes

Parameters
nameThe string to convert
char* ap_os_escape_path ( apr_pool_t p,
const char *  path,
int  partial 
)

convert an OS path to a URL in an OS dependent way.

Parameters
pThe pool to allocate from
pathThe path to convert
partialif set, assume that the path will be appended to something with a '/' in it (and thus does not prefix "./").
Returns
The converted URL, with one byte of extra space after the NUL to allow the caller to add a trailing '/'.
Deprecated:
Replaced by apr_pescape_path() in APR
int ap_os_is_path_absolute ( apr_pool_t p,
const char *  dir 
)

Test if the given path has an absolute path.

Parameters
pThe pool to allocate from
dirThe directory name
Note
The converse is not necessarily true, some OS's (Win32/OS2/Netware) have multiple forms of absolute paths. This only reports if the path is absolute in a canonical sense.
void* ap_palloc_debug ( apr_pool_t p,
apr_size_t  size 
)
int ap_parse_form_data ( request_rec r,
struct ap_filter_t f,
apr_array_header_t **  ptr,
apr_size_t  num,
apr_size_t  size 
)

Read the body and parse any form found, which must be of the type application/x-www-form-urlencoded.

Parameters
rrequest containing POSTed form data
ffilter
ptrreturned array of ap_form_pair_t
nummax num of params or -1 for unlimited
sizemax size allowed for parsed data
Returns
OK or HTTP error
const char* ap_parse_token_list_strict ( apr_pool_t p,
const char *  tok,
apr_array_header_t **  tokens,
int  skip_invalid 
)

Retrieve an array of tokens in the format "1#token" defined in RFC2616. Only accepts ',' as a delimiter, does not accept quoted strings, and errors on any separator.

Parameters
pThe pool to allocate from
tokThe line to read tokens from
tokensPointer to an array of tokens. If not NULL, must be an array of char*, otherwise it will be allocated on p when a token is found
skip_invalidIf true, when an invalid separator is encountered, it will be ignored.
Returns
NULL on success, an error string otherwise.
Remarks
*tokens may be NULL on output if NULL in input and no token is found
apr_status_t ap_password_validate ( request_rec r,
const char *  username,
const char *  passwd,
const char *  hash 
)

Wrapper for apr_password_validate() to cache expensive calculations

Parameters
rthe current request
usernameusername of the user
passwdpassword string
hashhash string to be passwd to apr_password_validate()
Returns
APR_SUCCESS if passwords match, APR_EMISMATCH or error otherwise
Note
Currently, ap_password_validate() only caches the result of the most recent call with the same connection as r. In the future, it may also do rate-limiting against brute-force attacks.
char* ap_pbase64decode ( apr_pool_t p,
const char *  bufcoded 
)

Decode a base64 encoded string into memory allocated from a pool

Parameters
pThe pool to allocate from
bufcodedThe encoded string
Returns
The decoded string
Deprecated:
Replaced by apr_pbase64_decode() in APR.
char* ap_pbase64encode ( apr_pool_t p,
char *  string 
)

Encode a string into memory allocated from a pool in base 64 format

Parameters
pThe pool to allocate from
stringThe plaintext string
Returns
The encoded string
Deprecated:
Replaced by apr_pbase64_encode() in APR.
void* ap_pcalloc_debug ( apr_pool_t p,
apr_size_t  size 
)
ap_regex_t* ap_pregcomp ( apr_pool_t p,
const char *  pattern,
int  cflags 
)

Compile a regular expression to be used later. The regex is freed when the pool is destroyed.

Parameters
pThe pool to allocate from
patternthe regular expression to compile
cflagsThe bitwise or of one or more of the following:
  • REG_EXTENDED - Use POSIX extended Regular Expressions
  • REG_ICASE - Ignore case
  • REG_NOSUB - Support for substring addressing of matches not required
  • REG_NEWLINE - Match-any-character operators don't match new-line
Returns
The compiled regular expression
void ap_pregfree ( apr_pool_t p,
ap_regex_t reg 
)

Free the memory associated with a compiled regular expression

Parameters
pThe pool the regex was allocated from
regThe regular expression to free
Note
This function is only necessary if the regex should be cleaned up before the pool
char* ap_pregsub ( apr_pool_t p,
const char *  input,
const char *  source,
apr_size_t  nmatch,
ap_regmatch_t  pmatch[] 
)

After performing a successful regex match, you may use this function to perform a series of string substitutions based on subexpressions that were matched during the call to ap_regexec. This function is limited to result strings of 64K. Consider using ap_pregsub_ex() instead.

Parameters
pThe pool to allocate from
inputAn arbitrary string containing $1 through $9. These are replaced with the corresponding matched sub-expressions
sourceThe string that was originally matched to the regex
nmatchthe nmatch returned from ap_pregex
pmatchthe pmatch array returned from ap_pregex
Returns
The substituted string, or NULL on error
apr_status_t ap_pregsub_ex ( apr_pool_t p,
char **  result,
const char *  input,
const char *  source,
apr_size_t  nmatch,
ap_regmatch_t  pmatch[],
apr_size_t  maxlen 
)

After performing a successful regex match, you may use this function to perform a series of string substitutions based on subexpressions that were matched during the call to ap_regexec

Parameters
pThe pool to allocate from
resultwhere to store the result, will be set to NULL on error
inputAn arbitrary string containing $1 through $9. These are replaced with the corresponding matched sub-expressions
sourceThe string that was originally matched to the regex
nmatchthe nmatch returned from ap_pregex
pmatchthe pmatch array returned from ap_pregex
maxlenthe maximum string length to return, 0 for unlimited
Returns
APR_SUCCESS if successful, APR_ENOMEM or other error code otherwise.
const char* ap_psignature ( const char *  prefix,
request_rec r 
)

Get HTML describing the address and (optionally) admin of the server.

Parameters
prefixText which is prepended to the return value
rThe request_rec
Returns
HTML describing the server, allocated in r's pool.
apr_status_t ap_pstr2_alnum ( apr_pool_t p,
const char *  src,
const char **  dest 
)

Cleanup a string (mainly to be filesystem safe) We only allow '_' and alphanumeric chars. Non-printable map to 'x' and all others map to '_'

Parameters
ppool to use to allocate dest
srcstring to clean up
destcleaned up, allocated string
Returns
Status value indicating whether the cleaning was successful or not.
void ap_random_insecure_bytes ( void buf,
apr_size_t  size 
)

Generate pseudo random bytes. This is a convenience interface to apr_random. It is cheaper but less secure than apr_generate_random_bytes().

Parameters
bufwhere to store the bytes
sizenumber of bytes to generate
Note
ap_random_insecure_bytes() is thread-safe, it uses a mutex on threaded MPMs.
apr_uint32_t ap_random_pick ( apr_uint32_t  min,
apr_uint32_t  max 
)

Get a pseudo random number in a range.

Parameters
minlow end of range
maxhigh end of range
Returns
a number in the range
void void* ap_realloc ( void ptr,
size_t  size 
)

Wrapper for realloc() that calls ap_abort_on_oom() if out of memory

Parameters
ptrpointer to the old memory block (or NULL)
sizenew size of the memory block
Returns
pointer to the reallocated memory
Note
ap_realloc may be implemented as a macro
int ap_request_has_body ( request_rec r)

Determine if a request has a request body or not.

Parameters
rthe request_rec of the request
Returns
truth value
const char* ap_resolve_env ( apr_pool_t p,
const char *  word 
)

Check a string for any config define or environment variable construct and replace each of them by the value of that variable, if it exists. The default syntax of the constructs is ${ENV} but can be changed by setting the define::* config defines. If the variable does not exist, leave the ${ENV} construct alone but print a warning.

Parameters
pThe pool to allocate from
wordThe string to check
Returns
The string with the replaced environment variables
int ap_rind ( const char *  str,
char  c 
)

Search a string from right to left for the first occurrence of a specific character

Parameters
strThe string to search
cThe character to search for
Returns
The index of the first occurrence of c in str
const char* ap_scan_http_field_content ( const char *  ptr)
const char* ap_scan_http_token ( const char *  ptr)
const char* ap_scan_http_uri_safe ( const char *  ptr)
void ap_set_context_info ( request_rec r,
const char *  prefix,
const char *  document_root 
)

Set context_prefix and context_document_root for a request.

Parameters
rThe request
prefixthe URI prefix, without trailing slash
document_rootthe corresponding directory on disk, without trailing slash
Note
If one of prefix of document_root is NULL, the corrsponding property will not be changed.
void ap_set_document_root ( request_rec r,
const char *  document_root 
)

Set per-request document root. This is for mass virtual hosting modules that want to provide the correct DOCUMENT_ROOT value to scripts.

Parameters
rThe request
document_rootthe document root for the request.
const char* ap_size_list_item ( const char **  field,
int len 
)

Size an HTTP header field list item, as separated by a comma.

Parameters
fieldThe field to size
lenThe length of the field
Returns
The return value is a pointer to the beginning of the non-empty list item within the original string (or NULL if there is none) and the address of field is shifted to the next non-comma, non-whitespace character. len is the length of the item excluding any beginning whitespace.
apr_status_t ap_str2_alnum ( const char *  src,
char *  dest 
)

Cleanup a string (mainly to be filesystem safe) We only allow '_' and alphanumeric chars. Non-printable map to 'x' and all others map to '_'

Parameters
srcstring to clean up
destcleaned up, pre-allocated string
Returns
Status value indicating whether the cleaning was successful or not.
void ap_str_tolower ( char *  s)

convert a string to all lowercase

Parameters
sThe string to convert to lowercase
void ap_str_toupper ( char *  s)

convert a string to all uppercase

Parameters
sThe string to convert to uppercase
int ap_strcasecmp_match ( const char *  str,
const char *  expected 
)

Determine if a string matches a pattern containing the wildcards '?' or '*', ignoring case

Parameters
strThe string to check
expectedThe pattern to match against
Returns
0 if the two strings match, 1 otherwise
char* ap_strcasestr ( const char *  s1,
const char *  s2 
)

Find the first occurrence of the substring s2 in s1, regardless of case

Parameters
s1The string to search
s2The substring to search for
Returns
A pointer to the beginning of the substring
Remarks
See apr_strmatch() for a faster alternative
char* ap_strchr ( char *  s,
int  c 
)
const char* ap_strchr_c ( const char *  s,
int  c 
)
int ap_strcmp_match ( const char *  str,
const char *  expected 
)

Determine if a string matches a pattern containing the wildcards '?' or '*'

Parameters
strThe string to check
expectedThe pattern to match against
Returns
0 if the two strings match, 1 otherwise
const char* ap_stripprefix ( const char *  bigstring,
const char *  prefix 
)

Return a pointer to the location inside of bigstring immediately after prefix

Parameters
bigstringThe input string
prefixThe prefix to strip away
Returns
A pointer relative to bigstring after prefix
char* ap_strrchr ( char *  s,
int  c 
)
const char* ap_strrchr_c ( const char *  s,
int  c 
)
char* ap_strstr ( char *  s,
const char *  c 
)
const char* ap_strstr_c ( const char *  s,
const char *  c 
)
apr_status_t ap_timeout_parameter_parse ( const char *  timeout_parameter,
apr_interval_time_t timeout,
const char *  default_time_unit 
)

Parse a given timeout parameter string into an apr_interval_time_t value. The unit of the time interval is given as postfix string to the numeric string. Currently the following units are understood:

ms : milliseconds s : seconds mi[n] : minutes h : hours

If no unit is contained in the given timeout parameter the default_time_unit will be used instead.

Parameters
timeout_parameterThe string containing the timeout parameter.
timeoutThe timeout value to be returned.
default_time_unitThe default time unit to use if none is specified in timeout_parameter.
Returns
Status value indicating whether the parsing was successful or not.
int ap_unescape_all ( char *  url)

Unescape a string

Parameters
urlThe string to unescape
Returns
0 on success, non-zero otherwise
int ap_unescape_url ( char *  url)

Unescape a URL

Parameters
urlThe url to unescape
Returns
0 on success, non-zero otherwise
Deprecated:
Replaced by apr_unescape_url() in APR
int ap_unescape_url_keep2f ( char *  url,
int  decode_slashes 
)

Unescape a URL, but leaving %2f (slashes) escaped

Parameters
urlThe url to unescape
decode_slashesWhether or not slashes should be decoded
Returns
0 on success, non-zero otherwise
Deprecated:
Replaced by apr_unescape_url() in APR
int ap_unescape_urlencoded ( char *  query)

Unescape an application/x-www-form-urlencoded string

Parameters
queryThe query to unescape
Returns
0 on success, non-zero otherwise
Deprecated:
Replaced by apr_unescape_url() in APR