Apache2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
httpd.h File Reference

HTTP Daemon routines. More...

#include "ap_config.h"
#include "ap_mmn.h"
#include "ap_release.h"
#include "apr.h"
#include "apr_general.h"
#include "apr_tables.h"
#include "apr_pools.h"
#include "apr_time.h"
#include "apr_network_io.h"
#include "apr_buckets.h"
#include "apr_poll.h"
#include "apr_thread_proc.h"
#include "apr_hash.h"
#include "os.h"
#include "ap_regex.h"
#include "apr_uri.h"
#include "util_filter.h"
#include <string.h>
Include dependency graph for httpd.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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 AP_START_USERERR   (APR_OS_START_USERERR + 2000)
 
#define AP_USERERR_LEN   1000
 
#define AP_DECLINED   (AP_START_USERERR + 0)
 
#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 RESPONSE_CODES   103
 
#define HTTP_CONTINUE   100
 
#define HTTP_SWITCHING_PROTOCOLS   101
 
#define HTTP_PROCESSING   102
 
#define HTTP_OK   200
 
#define HTTP_CREATED   201
 
#define HTTP_ACCEPTED   202
 
#define HTTP_NON_AUTHORITATIVE   203
 
#define HTTP_NO_CONTENT   204
 
#define HTTP_RESET_CONTENT   205
 
#define HTTP_PARTIAL_CONTENT   206
 
#define HTTP_MULTI_STATUS   207
 
#define HTTP_ALREADY_REPORTED   208
 
#define HTTP_IM_USED   226
 
#define HTTP_MULTIPLE_CHOICES   300
 
#define HTTP_MOVED_PERMANENTLY   301
 
#define HTTP_MOVED_TEMPORARILY   302
 
#define HTTP_SEE_OTHER   303
 
#define HTTP_NOT_MODIFIED   304
 
#define HTTP_USE_PROXY   305
 
#define HTTP_TEMPORARY_REDIRECT   307
 
#define HTTP_PERMANENT_REDIRECT   308
 
#define HTTP_BAD_REQUEST   400
 
#define HTTP_UNAUTHORIZED   401
 
#define HTTP_PAYMENT_REQUIRED   402
 
#define HTTP_FORBIDDEN   403
 
#define HTTP_NOT_FOUND   404
 
#define HTTP_METHOD_NOT_ALLOWED   405
 
#define HTTP_NOT_ACCEPTABLE   406
 
#define HTTP_PROXY_AUTHENTICATION_REQUIRED   407
 
#define HTTP_REQUEST_TIME_OUT   408
 
#define HTTP_CONFLICT   409
 
#define HTTP_GONE   410
 
#define HTTP_LENGTH_REQUIRED   411
 
#define HTTP_PRECONDITION_FAILED   412
 
#define HTTP_REQUEST_ENTITY_TOO_LARGE   413
 
#define HTTP_REQUEST_URI_TOO_LARGE   414
 
#define HTTP_UNSUPPORTED_MEDIA_TYPE   415
 
#define HTTP_RANGE_NOT_SATISFIABLE   416
 
#define HTTP_EXPECTATION_FAILED   417
 
#define HTTP_IM_A_TEAPOT   418
 
#define HTTP_MISDIRECTED_REQUEST   421
 
#define HTTP_UNPROCESSABLE_ENTITY   422
 
#define HTTP_LOCKED   423
 
#define HTTP_FAILED_DEPENDENCY   424
 
#define HTTP_TOO_EARLY   425
 
#define HTTP_UPGRADE_REQUIRED   426
 
#define HTTP_PRECONDITION_REQUIRED   428
 
#define HTTP_TOO_MANY_REQUESTS   429
 
#define HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE   431
 
#define HTTP_UNAVAILABLE_FOR_LEGAL_REASONS   451
 
#define HTTP_INTERNAL_SERVER_ERROR   500
 
#define HTTP_NOT_IMPLEMENTED   501
 
#define HTTP_BAD_GATEWAY   502
 
#define HTTP_SERVICE_UNAVAILABLE   503
 
#define HTTP_GATEWAY_TIME_OUT   504
 
#define HTTP_VERSION_NOT_SUPPORTED   505
 
#define HTTP_VARIANT_ALSO_VARIES   506
 
#define HTTP_INSUFFICIENT_STORAGE   507
 
#define HTTP_LOOP_DETECTED   508
 
#define HTTP_NOT_EXTENDED   510
 
#define HTTP_NETWORK_AUTHENTICATION_REQUIRED   511
 
#define ap_is_HTTP_INFO(x)   (((x) >= 100)&&((x) < 200))
 
#define ap_is_HTTP_SUCCESS(x)   (((x) >= 200)&&((x) < 300))
 
#define ap_is_HTTP_REDIRECT(x)   (((x) >= 300)&&((x) < 400))
 
#define ap_is_HTTP_ERROR(x)   (((x) >= 400)&&((x) < 600))
 
#define ap_is_HTTP_CLIENT_ERROR(x)   (((x) >= 400)&&((x) < 500))
 
#define ap_is_HTTP_SERVER_ERROR(x)   (((x) >= 500)&&((x) < 600))
 
#define ap_is_HTTP_VALID_RESPONSE(x)   (((x) >= 100)&&((x) < 600))
 
#define ap_status_drops_connection(x)
 
#define AP_STATUS_IS_HEADER_ONLY(x)
 
#define M_GET   0 /** RFC 2616: HTTP */
 
#define M_PUT   1 /* : */
 
#define M_POST   2
 
#define M_DELETE   3
 
#define M_CONNECT   4
 
#define M_OPTIONS   5
 
#define M_TRACE   6 /** RFC 2616: HTTP */
 
#define M_PATCH   7 /** no rfc(!) ### remove this one? */
 
#define M_PROPFIND   8 /** RFC 2518: WebDAV */
 
#define M_PROPPATCH   9 /* : */
 
#define M_MKCOL   10
 
#define M_COPY   11
 
#define M_MOVE   12
 
#define M_LOCK   13
 
#define M_UNLOCK   14 /** RFC 2518: WebDAV */
 
#define M_VERSION_CONTROL   15 /** RFC 3253: WebDAV Versioning */
 
#define M_CHECKOUT   16 /* : */
 
#define M_UNCHECKOUT   17
 
#define M_CHECKIN   18
 
#define M_UPDATE   19
 
#define M_LABEL   20
 
#define M_REPORT   21
 
#define M_MKWORKSPACE   22
 
#define M_MKACTIVITY   23
 
#define M_BASELINE_CONTROL   24
 
#define M_MERGE   25
 
#define M_INVALID
 
#define METHODS   64
 
#define AP_METHOD_BIT   ((apr_int64_t)1)
 
#define CGI_MAGIC_TYPE   "application/x-httpd-cgi"
 
#define INCLUDES_MAGIC_TYPE   "text/x-server-parsed-html"
 
#define INCLUDES_MAGIC_TYPE3   "text/x-server-parsed-html3"
 
#define DIR_MAGIC_TYPE   "httpd/unix-directory"
 
#define AP_DEFAULT_HANDLER_NAME   ""
 
#define AP_IS_DEFAULT_HANDLER_NAME(x)   (*x == '\0')
 
#define LF   10
 
#define CR   13
 
#define CRLF   "\015\012"
 
#define CRLF_ASCII   "\015\012"
 
#define ZERO_ASCII   "\060"
 
#define REQUEST_NO_BODY   0
 
#define REQUEST_CHUNKED_ERROR   1
 
#define REQUEST_CHUNKED_DECHUNK   2
 
#define AP_REQ_ACCEPT_PATH_INFO   0
 
#define AP_REQ_REJECT_PATH_INFO   1
 
#define AP_REQ_DEFAULT_PATH_INFO   2
 
#define PROXYREQ_NONE   0
 
#define PROXYREQ_PROXY   1
 
#define PROXYREQ_REVERSE   2
 
#define PROXYREQ_RESPONSE   3
 
#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_TAINT_HTACCESS   0x1
 
#define ap_assert(exp)   ((exp) ? (void)0 : ap_log_assert(#exp,__FILE__,__LINE__))
 
#define AP_DEBUG_ASSERT(exp)   ((void)0)
 
#define SIGSTOP_DETACH   1
 
#define SIGSTOP_MAKE_CHILD   2
 
#define SIGSTOP_SPAWN_CHILD   4
 
#define SIGSTOP_PIPED_LOG_SPAWN   8
 
#define SIGSTOP_CGI_CHILD   16
 
#define RAISE_SIGSTOP(x)
 
#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,
  CONN_STATE_NUM
}
 
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_vchar_obstext (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)
 
apr_status_t ap_pbase64decode_strict (apr_pool_t *p, const char *encoded, char **decoded, apr_size_t *len)
 
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)
 
int ap_request_tainted (request_rec *r, int flags)
 
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
 
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

HTTP Daemon routines.