26#if APR_MAJOR_VERSION < 2
31#define APR_WANT_STRFUNC
32#define APR_WANT_MEMFUNC
61#if defined(RLIMIT_CPU) || defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS) || defined (RLIMIT_NPROC)
69#define AP_LIMIT_REQ_BODY_UNSET ((apr_off_t) -1)
70#define AP_DEFAULT_LIMIT_REQ_BODY ((apr_off_t) 1<<30)
73#define AP_LIMIT_UNSET ((long) -1)
74#define AP_DEFAULT_LIMIT_XML_BODY ((apr_size_t)1000000)
76#define AP_MAX_LIMIT_XML_BODY ((apr_size_t)(APR_SIZE_MAX / 6 - 1))
78#define AP_MIN_SENDFILE_BYTES (256)
81#ifndef AP_MAX_INCLUDE_DEPTH
82#define AP_MAX_INCLUDE_DEPTH (128)
86#define AP_ACCEPT_PATHINFO_UNSET 3
88#define AP_CONTENT_MD5_OFF 0
89#define AP_CONTENT_MD5_ON 1
90#define AP_CONTENT_MD5_UNSET 2
92#define AP_FLUSH_MAX_THRESHOLD 65535
93#define AP_FLUSH_MAX_PIPELINED 4
127#undef APLOG_MODULE_INDEX
128#define APLOG_MODULE_INDEX AP_CORE_MODULE_INDEX
236 conf->
refs =
new->refs;
262 conf->
opts =
new->opts;
275 if (
new->override_list !=
NULL) {
282 else if (
new->response_code_exprs !=
NULL) {
310 if (
new->limit_cpu) {
311 conf->limit_cpu =
new->limit_cpu;
315#if defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) || defined(RLIMIT_AS)
316 if (
new->limit_mem) {
317 conf->limit_mem =
new->limit_mem;
322 if (
new->limit_nproc) {
323 conf->limit_nproc =
new->limit_nproc;
337 else if (
new->sec_file) {
346 conf->
sec_if =
new->sec_if;
348 else if (
new->sec_if) {
367 if (
new->mime_type) {
374 if (
new->expr_handler) {
378 if (
new->output_filters) {
382 if (
new->input_filters) {
415 if (
new->read_buf_size) {
427 conf->
log =
new->log;
441 if (
new->cgi_var_rules) {
455#if APR_HAS_SO_ACCEPTFILTER
456#ifndef ACCEPT_FILTER_NAME
457#define ACCEPT_FILTER_NAME "httpready"
458#ifdef __FreeBSD_version
459#if __FreeBSD_version < 411000
460#undef ACCEPT_FILTER_NAME
461#define ACCEPT_FILTER_NAME "dataready"
470 int is_virtual =
s->is_virtual;
482#if APR_HAS_SO_ACCEPTFILTER
539 if (
virt->ap_document_root)
542 if (
virt->access_name)
549 if (
virt->redirect_limit)
552 if (
virt->subreq_limit)
575 if (
virt->error_log_format)
578 if (
virt->error_log_conn)
581 if (
virt->error_log_req)
585 ?
virt->merge_trailers
586 :
base->merge_trailers;
591 base->protocols_honor_order :
592 virt->protocols_honor_order);
597 ?
virt->flush_max_threshold
598 :
base->flush_max_threshold;
600 ?
virt->flush_max_pipelined
601 :
base->flush_max_pipelined;
604 ?
virt->strict_host_check
605 :
base->strict_host_check;
666 return "<Else> or <ElseIf> section without previous <If> or "
667 "<ElseIf> section in same scope";
717 return a->orig_index -
b->orig_index;
731 sec_dir =
sconf->sec_dir;
833 if (
rconf->document_root)
834 return rconf->document_root;
836 return sconf->ap_document_root;
864 const char *context_document_root)
869 if (context_document_root)
883 const char *response;
895 if (!
dirconf->response_code_exprs) {
915 "evaluate require expression: %s",
err);
926 const char *remote_host,
933 if (double_reverse) {
935 return double_reverse;
938 if (remote_host ==
NULL || remote_host[0] ==
'\0') {
960 int hostname_lookups;
1040 int hostname_lookups;
1153 switch (
d->use_canonical_name) {
1175 "ap_get_server_name: Invalid UCN Option somehow");
1205 switch (
d->use_canonical_name) {
1238 "ap_get_server_port: Invalid UCN Option somehow");
1304 const char *
gt = (
cmd->cmd->name[0] ==
'<'
1305 &&
cmd->cmd->name[strlen(
cmd->cmd->name)-1] !=
'>')
1311 " cannot occur within <VirtualHost> section",
NULL);
1316 " cannot occur within <Limit> or <LimitExcept> "
1322 " cannot occur within htaccess files",
NULL);
1328 " cannot occur within directory context",
NULL);
1354 " cannot occur within ",
found->directive,
1364 void *
sconf =
cmd->server->module_config;
1378# define SMALL_EXPANSION 5
1385 const char *
s, *
e, *
ep;
1398 current->next =
NULL;
1399 current->string =
word;
1400 current->len =
s -
word;
1409 sizeof(*current->next));
1410 current = current->next;
1411 current->next =
NULL;
1424 current->string =
word;
1425 current->len = strlen(
word);
1431 "Config variable ${%s} is not defined",
1433 current->string =
s;
1434 current->len =
e -
s + 1;
1440 current->string =
s++;
1448 current->string =
word;
1500 return "Variable name must not contain ':'";
1528 return "Variable name must not contain ':'";
1554 return "The Error directive was used with no message.";
1557 if (*
arg ==
'"' || *
arg ==
'\'') {
1572 void *
sconf =
cmd->server->module_config;
1586 void *
d_,
const char *
arg)
1599 d->add_default_charset_name =
arg;
1608 void *
sconf =
cmd->server->module_config;
1625 return "DocumentRoot must be a directory";
1632 if (
cmd->server->is_virtual) {
1635 "Warning: DocumentRoot [%s] does not exist",
1641 "DocumentRoot '%s' is not a directory, or is not readable",
1663 ((
ap_is_url(
string) || (*
string ==
'/')) && (*
string !=
'"')) ?
1691 else if (msg[0] ==
'/')
1702 "%s:%d cannot use a full URL in a 401 ErrorDocument "
1703 "directive --- ignoring!",
cmd->directive->filename,
cmd->directive->line_num);
1720 const char *expr_err =
NULL;
1726 const char *response =
1735 "Cannot parse expression in ErrorDocument: ",
1755 char *w, *
p = (
char *) l;
1820 "Useless use of AllowOverride in line %d of %s.",
1821 cmd->directive->line_num,
cmd->directive->filename);
1857 return apr_pstrcat(
cmd->pool,
"=Override, =Unknown or =All expected after ", w,
NULL);
1895 const char *
var,
const char *
rule_)
1904 return "Valid rules for REQUEST_URI are 'current-uri' and 'original-uri'";
1912 if (!
d->cgi_var_rules) {
1944 "Useless use of AllowOverrideList at %s:%d",
1945 cmd->directive->filename,
cmd->directive->line_num);
1955 return "'None' not allowed with other directives in "
1956 "AllowOverrideList";
1962 module *mod = ap_top_module;
1967 APLOGNO(00116)
"Discarding unrecognized "
1968 "directive `%s' in AllowOverrideList at %s:%d",
1970 cmd->directive->line_num);
1975 APLOGNO(02304)
"Discarding directive `%s' not "
1976 "allowed in AllowOverrideList at %s:%d",
1978 cmd->directive->line_num);
2003 if (*w ==
'+' || *w ==
'-') {
2006 return "Either all Options must start with + or -, or no Option may.";
2014 return "Either all Options must start with + or -, or no Option may.";
2043 return "'Options None' must be the first Option given.";
2046 return "You may not use 'Options +None' or 'Options -None'.";
2053 return "'Options All' must be the first option given.";
2056 return "You may not use 'Options +All' or 'Options -All'.";
2065 if ( (
cmd->override_opts &
opt) !=
opt ) {
2068 else if (action ==
'-') {
2070 d->opts_remove |=
opt;
2071 d->opts_add &=
~opt;
2074 else if (action ==
'+') {
2076 d->opts_remove &=
~opt;
2094 "Ignoring deprecated use of DefaultType in line %d of %s.",
2095 cmd->directive->line_num,
cmd->directive->filename);
2112 "Can't parse expression : ",
err,
NULL);
2139 while (
args[0] !=
'\0') {
2144 if ((*token ==
'+') || (*token ==
'-')) {
2163 if (action !=
'*') {
2172 if (action !=
'*') {
2196 token,
"' for ",
cmd->cmd->name,
2197 " directive",
NULL);
2202 token,
"' cannot be used with '+' or '-'",
2206 if (action ==
'+') {
2214 else if (action ==
'-') {
2265 return "parameter must be 'on' or 'off'";
2283 return "parameter must be 'on' or 'off'";
2299 "parameter must be a number between 0 and "
2319 "parameter must be a number between 0 and "
2339 "parameter must be a number between -1 and "
2354 "> directive missing closing '>'",
NULL);
2363 "> directive requires additional arguments",
NULL);
2372 void *
tog =
cmd->cmd->cmd_data;
2395 return "TRACE cannot be controlled by <Limit>, see TraceEnable";
2401 if (
cmd->pool ==
cmd->temp_pool) {
2404 "for %s from .htaccess configuration",
2421 "> directive excludes all methods",
NULL);
2425 "> directive specifies methods already excluded",
2429 cmd->limited &= limited;
2445#define USE_ICASE AP_REG_ICASE
2482 return "<Directory ~ > block must specify a path";
2485 return "Regex could not be compiled";
2491 return "Regex could not be compiled";
2505 "\"> path is invalid.",
NULL);
2509 if (
cmd->path[strlen(
cmd->path) - 1] !=
'/')
2515 &core_module,
cmd->pool);
2522 conf->
d =
cmd->path;
2534 if (
strcmp(conf->
d,
"/") == 0)
2543 "> arguments not (yet) supported.",
NULL);
2583 return "Regex could not be compiled";
2590 return "Regex could not be compiled";
2596 &core_module,
cmd->pool);
2615 "> arguments not (yet) supported.",
NULL);
2660 return "Regex could not be compiled";
2667 return "Regex could not be compiled";
2677 "\"> is invalid.",
NULL);
2683 &core_module,
cmd->pool);
2689 conf->
d =
cmd->path;
2702 "> arguments not (yet) supported.",
NULL);
2711#define COND_IF ((void *)1)
2712#define COND_ELSE ((void *)2)
2713#define COND_ELSEIF ((void *)3)
2725 const char *condition;
2726 const char *expr_err;
2750 &core_module,
cmd->pool);
2763 return "<Else> does not take an argument";
2779 conf->
d =
cmd->path;
2789 "> arguments not supported.",
NULL);
2798static module *find_module(server_rec *s, const char *name)
2800 module *found = ap_find_linked_module(name);
2806 for (; current->
name; ++current) {
2808 found = current->modp;
2880 ¤t, &
parent, (
char *)
cmd->cmd->name);
2893 return find_module(
cmd->server,
arg) !=
NULL;
2964 return "<VirtualHost> doesn't nest!";
2976 s->defn_line_number =
cmd->directive->line_num;
2981 s->lookup_defaults);
3014 else if (*
name ==
'-') {
3043 if (!
cmd->server->names) {
3044 return "ServerAlias only used in <VirtualHost>";
3153 "\" use ServerAlias to set multiple server names.",
NULL);
3160 cmd->server->server_scheme = (
const char *)scheme;
3174 "\" is outside the appropriate range "
3175 "(i.e., 1..65535).",
NULL);
3202 return "ServerSignature: use one of: off | on | email";
3220 return "ServerRoot must be a valid directory";
3238 return "DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot";
3262 d->decode_encoded_slashes = 1;
3264 d->allow_encoded_slashes = 0;
3265 d->decode_encoded_slashes = 0;
3267 d->allow_encoded_slashes = 1;
3268 d->decode_encoded_slashes = 0;
3271 cmd->cmd->name,
" must be On, Off, or NoDecode",
3292 return "parameter must be 'on', 'off', or 'double'";
3308 cmd->server->pathlen = (
int)strlen(
arg);
3334 return "AcceptPathInfo must be set to on, off or default";
3355 return "parameter must be 'on', 'off', or 'dns'";
3373 return "parameter must be 'on' or 'off'";
3404 return apr_psprintf(
cmd->pool,
"Exceeded maximum include depth of %u, "
3405 "There appears to be a recursion.",
3417 unsigned *line_number;
3431 *line_number =
cmd->config_file->line_number;
3435 cmd->pool,
cmd->temp_pool,
3469 log = &
cmd->server->log;
3473 return "LogLevel requires level keyword or module loglevel specifier";
3483 "Setting LogLevel for all modules to %s",
arg);
3490 "followed by a log level keyword",
arg);
3500 "Cannot find module '%s', trying '%s'",
arg,
name);
3501 module = find_module(cmd->server, name);
3510 "Setting LogLevel for module %s to %s",
module->
name,
3532 " Server at <a href=\"",
3537 "</a> Port ",
sport,
3538 "</address>\n",
NULL);
3545 "</address>\n",
NULL);
3684 return "ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'";
3703 "\" must be a non-negative integer",
NULL);
3706 cmd->server->limit_req_line =
lim;
3723 "\" must be a non-negative integer",
3727 cmd->server->limit_req_fieldsize =
lim;
3744 "\" must be a non-negative integer (0 = no limit)",
3748 cmd->server->limit_req_fields =
lim;
3759 return "LimitRequestBody argument is not parsable.";
3762 return "LimitRequestBody requires a non-negative integer.";
3775 return "LimitXMLRequestBody requires a non-negative integer.";
3802 return "MaxRanges requires 'none', 'default', 'unlimited' or "
3803 "a positive integer";
3828 return "MaxRangeOverlaps requires 'none', 'default', 'unlimited' or "
3829 "a positive integer";
3854 return "MaxRangeReversals requires 'none', 'default', 'unlimited' or "
3855 "a positive integer";
3876#if !defined (RLIMIT_CPU) || !(defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS)) || !defined (RLIMIT_NPROC)
3878 const char *
arg,
const char *
arg2)
3881 "%s not supported on this platform",
cmd->cmd->name);
3889 const char *
arg,
const char *
arg2)
3898#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS)
3900 const char *
arg,
const char *
arg2)
3904#if defined(RLIMIT_AS)
3906#elif defined(RLIMIT_DATA)
3908#elif defined(RLIMIT_VMEM)
3918 const char *
arg,
const char *
arg2)
3928 const char *
arg1,
const char *
arg2)
3935 return "The recursion limit must be greater than zero.";
3939 "Limiting internal redirects to very low numbers may "
3940 "cause normal requests to fail.");
3949 return "The recursion limit must be greater than zero.";
3953 "Limiting the subrequest depth to a very low level may"
3954 " cause normal requests to fail.");
3969 "r->uri = %s",
r->
uri ?
r->
uri :
"(unexpectedly NULL)");
3971 while (top && (top->
prev || top->
main)) {
3975 "redirected from r->uri = %s",
3976 top->
uri ? top->
uri :
"(unexpectedly NULL)");
3982 "subrequested from r->uri = %s",
3983 top->
uri ? top->
uri :
"(unexpectedly NULL)");
3997 int redirects = 0,
subreqs = 0;
4008 if (++redirects >=
rlimit) {
4011 "Request exceeded the limit of %d internal "
4012 "redirects due to probable configuration error. "
4013 "Use 'LimitInternalRecursion' to increase the "
4014 "limit if necessary. Use 'LogLevel debug' to get "
4031 "Request exceeded the limit of %d subrequest "
4032 "nesting levels due to probable configuration "
4033 "error. Use 'LimitInternalRecursion' to increase "
4034 "the limit if necessary. Use 'LogLevel debug' to "
4035 "get a backtrace.",
slimit);
4068 return "TraceEnable must be one of 'on', 'off', or 'extended'";
4110 return "ProtocolsHonorOrder must be 'on' or 'off'";
4135 return "HttpProtocolOptions accepts "
4136 "'Unsafe' or 'Strict' (default), "
4137 "'RegisteredMethods' or 'LenientMethods' (default), and "
4138 "'Require1.0' or 'Allow0.9' (default)";
4142 return "HttpProtocolOptions 'Allow0.9' and 'Require1.0'"
4143 " are mutually exclusive";
4147 return "HttpProtocolOptions 'Strict' and 'Unsafe'"
4148 " are mutually exclusive";
4152 return "HttpProtocolOptions 'RegisteredMethods' and 'LenientMethods'"
4153 " are mutually exclusive";
4235 const char *
s = *
sa;
4255 else if (*
s ==
'%') {
4288 i =
i * 10 + (*s) -
'0';
4289 it->min_loglevel =
i;
4303 return apr_pstrcat(
p,
"Unrecognized error log format directive %",
4306 it->func = handler->
func;
4312 return "Ran off end of error log format parsing args to some directive";
4336 *
err =
"%M cannot be used in once-per-request or "
4337 "once-per-connection formats";
4343 *
err =
"The '+' flag cannot be used in the main error log format";
4347 *
err =
"The loglevel cannot be used as a condition in "
4348 "once-per-request or once-per-connection formats";
4352 *
err =
"The specified loglevel modifier is out of range";
4358 *
err =
"main ErrorLogFormat must contain message format string '%M'";
4366 const char *
arg1,
const char *
arg2)
4401 err_string =
"ErrorLogFormat type must be one of request, connection";
4457 "Container for directives affecting resources located in the specified "
4460 "Container for directives affecting resources accessed through the "
4461 "specified URL paths"),
4463 "Container to map directives to a particular virtual host, takes one or "
4464 "more host addresses"),
4466 "Container for directives affecting files matching specified patterns"),
4468 "Container for authentication directives when accessed using specified HTTP "
4472 "Container for authentication directives to be applied when any HTTP "
4473 "method other than those specified is used to access the resource"),
4476 "Container for directives based on existence of specified modules"),
4479 "Container for directives based on existence of command line defines"),
4482 "Container for directives based on existence of files on disk"),
4485 "Container for directives based on existence of named directive"),
4488 "Container for directives based on existence of named section"),
4490 "Container for directives affecting resources located in the "
4491 "specified directories"),
4493 "Container for directives affecting resources accessed through the "
4494 "specified URL paths"),
4496 "Container for directives affecting files matching specified patterns"),
4499 "Directory to plop gmon.out files"),
4502 "The name of the default charset to add to any Content-Type without one or 'Off' to disable"),
4504 "Set to on or off for PATH_INFO to be accepted by handlers, or default for the per-handler preference"),
4506 "Define a variable, optionally to a value. Same as passing -D to the command line."),
4508 "Undefine the existence of a variable. Undo a Define."),
4510 "Generate error message from within configuration"),
4512 "Container for directives to be conditionally applied"),
4514 "Container for directives to be conditionally applied"),
4516 "Container for directives to be conditionally applied"),
4521 "Name(s) of per-directory config files (default: .htaccess)"),
4523 "Root directory of the document tree"),
4525 "Change responses for HTTP errors"),
4527 "Controls what groups of directives can be configured by per-directory "
4530 "Controls what individual directives can be configured by per-directory "
4533 "Set a number of attributes for a given directory"),
4535 "the default media type for otherwise untyped files (DEPRECATED)"),
4537 "Specify components used to construct a file's ETag"),
4539 "Controls whether memory-mapping may be used to read files"),
4541 "Controls whether sendfile may be used to transmit files"),
4543 "Size (in bytes) of the memory buffers used to read data"),
4545 "Maximum threshold above which pending data are flushed to the network"),
4547 "Maximum number of pipelined responses (pending) above which they are "
4548 "flushed to the network"),
4551 "Controls what UNC hosts may be looked up"),
4557 "Set the Protocol for httpd to use."),
4559 "Set the Accept Filter to use for a protocol"),
4561 "Port was replaced with Listen in Apache 2.0"),
4564 "\"on\" to enable, \"off\" to disable reverse DNS lookups, or \"double\" to "
4565 "enable double-reverse DNS lookups"),
4568 "The email address of the server administrator"),
4570 "The hostname and port of the server"),
4572 "En-/disable server signature (on|off|email)"),
4574 "Common directory of server-related files (logs, confs, etc.)"),
4576 "Common directory for run-time files (shared memory, locks, etc.)"),
4579 "The filename of the error log"),
4581 "Format string for the ErrorLog"),
4583 "A name or names alternately used to access the server"),
4585 "The pathname the server can be reached at"),
4587 "Timeout duration (sec)"),
4589 "whether or not to send a Content-MD5 header with each request"),
4592 "How to work out the ServerName : Port when constructing URLs"),
4595 "Whether to use the physical Port when constructing URLs"),
4600 "Name(s) of the config file(s) to be included; fails if the wildcard does "
4601 "not match at least one file"),
4604 "Name or pattern of the config file(s) to be included; ignored if the file "
4605 "does not exist or the pattern does not match any files"),
4607 "Level of verbosity in error logging"),
4609 "A numeric IP address:port, or the name of a host"),
4611 "Determine tokens displayed in the Server: header - Min(imal), "
4612 "Major, Minor, Prod(uctOnly), OS, or Full"),
4614 "Limit on maximum size of an HTTP request line"),
4617 "Limit on maximum size of an HTTP request header field"),
4619 "Limit (0 = unlimited) on max number of header fields in a request message"),
4622 "Limit (in bytes) on maximum size of request message body"),
4624 "Limit (in bytes) on maximum size of an XML-based request "
4627 "mutex (or \"default\") and mechanism"),
4630 "Maximum number of Ranges in a request before returning the entire "
4631 "resource, or 0 for unlimited"),
4633 "Maximum number of overlaps in Ranges in a request before returning the entire "
4634 "resource, or 0 for unlimited"),
4636 "Maximum number of reversals in Ranges in a request before returning the entire "
4637 "resource, or 0 for unlimited"),
4642 OR_ALL,
"Soft/hard limits for max CPU usage in seconds"),
4645 OR_ALL,
"Soft/hard limits for max CPU usage in seconds"),
4647#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined (RLIMIT_AS)
4650 OR_ALL,
"Soft/hard limits for max memory usage per process"),
4653 OR_ALL,
"Soft/hard limits for max memory usage per process"),
4658 OR_ALL,
"soft/hard limits for max number of processes per uid"),
4661 OR_ALL,
"soft/hard limits for max number of processes per uid"),
4665 "default options for regexes (prefixed by '+' to add, '-' to del)"),
4669 "maximum recursion depth of internal redirects and subrequests"),
4672 "Controls whether HTTP authorization headers, normally hidden, will "
4673 "be passed to scripts"),
4675 "Controls how some CGI variables are set"),
4677 "Controls whether the REDIRECT_URL environment variable is fully "
4682 "Controls whether a hostname match is required"),
4685 "a mime type that overrides other configured type"),
4687 "a handler name that overrides any other configured handler"),
4690 "filter (or ; delimited list of filters) to be run on the request content"),
4693 "filter (or ; delimited list of filters) to be run on the request body"),
4695 "Allow URLs containing '/' encoded as '%2F'"),
4699 "A file for Apache to maintain runtime process management information"),
4701 "\"On\" to track extended status information, \"Off\" to disable"),
4703 "For extended status, \"On\" to see the last 63 chars of "
4704 "the request line, \"Off\" (default) to see the first 63"),
4713 "A file for logging the server process ID"),
4715 "Maximum number of connections a particular child serves before "
4716 "dying. (DEPRECATED, use MaxConnectionsPerChild)"),
4718 "Maximum number of connections a particular child serves before dying."),
4720 "The location of the directory Apache changes to before dumping core"),
4722 "Maximum number of 1k blocks a particular child's allocator may hold."),
4724 "Size in bytes of stack used by threads handling client connections"),
4725#if AP_ENABLE_EXCEPTION_HOOK
4727 "Controls whether exception hook may be called after a crash"),
4730 "'on' (default), 'off' or 'extended' to trace request body content"),
4732 "merge request trailers into request headers or not"),
4734 "Controls which protocols are allowed"),
4736 "'off' (default) or 'on' to respect given order of protocols, "
4737 "by default the client specified order determines selection"),
4739 "'Allow0.9' or 'Require1.0' (default); "
4740 "'RegisteredMethods' or 'LenientMethods' (default); "
4741 "'Unsafe' or 'Strict' (default). Sets HTTP acceptance rules"),
4743 "Registers non-standard HTTP methods"),
4747 "Controls whether consecutive slashes in the URI path are merged"),
4792 while (*
path ==
'/') {
4846 "Can't evaluate handler expression: %s",
err);
4921 "File does not exist: %s",
4931 "Attempt to serve directory: %s",
r->
filename);
4940 "File does not exist: %s",
4957 if (!
req_cfg->deliver_script) {
4960 "This resource does not accept the %s method.",
4973 "file permissions deny server access: %s",
r->
filename);
5001#if APR_MAJOR_VERSION > 1 || (APU_MAJOR_VERSION == 1 && APU_MINOR_VERSION >= 6)
5002 if (
d->read_buf_size) {
5022 "default_handler: ap_pass_brigade returned %i",
5037 "Invalid method in request %s - possible attempt to establish SSL connection on non-SSL port",
r->
the_request);
5070 if (!
s->error_fname ||
s->error_fname[0] ==
'|'
5071 ||
strcmp(
s->error_fname,
"syslog") == 0
5072 ||
strncmp(
s->error_fname,
"syslog:", 7) == 0) {
5083 const char *desc =
"main error log";
5085 desc =
apr_psprintf(
p,
"error log of vhost defined at %s:%d",
5086 s->defn_name,
s->defn_line_number);
5089 "Cannot access directory '%s' for %s",
dir, desc);
5139 "Server MUST relinquish startup privileges before "
5140 "accepting connections. Please ensure mod_unixd "
5141 "or other system security module is loaded.");
5260 "apr_socket_addr_get(APR_LOCAL)");
5265#if APR_HAVE_SOCKADDR_UN
5266 if (
c->local_addr->family ==
APR_UNIX) {
5268 c->local_addr->ipaddr_len);
5278 "apr_socket_addr_get(APR_REMOTE)");
5283#if APR_HAVE_SOCKADDR_UN
5284 if (
c->client_addr->family ==
APR_UNIX) {
5286 c->client_addr->ipaddr_len);
5296 c->bucket_alloc = alloc;
5298 c->clogging_input_filters = 0;
5326 "apr_socket_opt_set(APR_TCP_NODELAY)");
5339 "apr_socket_timeout_set");
5345 net->client_socket =
csd;
5437 unsigned char seed[8];
5451 "Could not initialize random number generator");
5483#define RAND_RANGE(__n, __min, __max, __tmax) \
5484(__n) = (__min) + (long) ((double) ((__max) - (__min) + 1.0) * ((__n) / ((__tmax) + 1.0)))
5488#if (!__GNUC__ || __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || \
5489 !__sparc__ || APR_SIZEOF_VOIDP != 8)
5535 if (
s->error_fname[0] !=
'|'
5536 &&
strcmp(
s->error_fname,
"syslog") != 0
5537 &&
strncmp(
s->error_fname,
"syslog:", 7) != 0)
5540 tmp =
s->error_fname;
5565 const char *upgrade;
5574 if (upgrade && *upgrade) {
5583 "parsing Upgrade header: %s",
err);
5610 else if (!
c->keepalives) {
5630 (
r->
uri[1] ==
'\0')) {
5640 if (
c && !
c->master) {
5681 "ap_filepath_merge: check converted path %s allowed %d",
5683 sconf->unc_list ?
sconf->unc_list->nelts : 0);
5685 for (
i = 0;
sconf->unc_list &&
i <
sconf->unc_list->nelts;
i++) {
5693 "ap_filepath_merge: match %s %s",
5699 "ap_filepath_merge: no match %s %s",
uri.hostinfo,
5705 "ap_filepath_merge: UNC path %s not allowed by UNCList",
teststring);
5727#undef apr_filepath_merge
5731#define apr_filepath_merge ap_filepath_merge
Symbol export macros and hook functions.
#define AP_DECLARE_NONSTD(type)
#define AP_IMPLEMENT_HOOK_RUN_ALL(ret, name, args_decl, args_use, ok, decline)
#define AP_IMPLEMENT_HOOK_RUN_FIRST(ret, name, args_decl, args_use, decline)
Apache Listeners Library.
const char apr_size_t len
#define AP_SERVER_BASEPRODUCT
#define AP_SERVER_PATCHLEVEL_NUMBER
#define AP_SERVER_MINORVERSION_NUMBER
#define AP_SERVER_MAJORVERSION
#define AP_SERVER_MAJORVERSION_NUMBER
#define AP_SERVER_ADD_STRING
#define AP_SERVER_MINORREVISION
#define AP_SERVER_BASEVERSION
APR-UTIL Buckets/Bucket Brigades.
APR general purpose library routines.
apr_size_t const unsigned char unsigned int unsigned int d
apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)
APR Thread and Process Library.
APR Versioning Interface.
APR Standard Headers Support.
APR-util Versioning Interface.
const command_rec * ap_find_command_in_modules(const char *cmd_name, module **mod)
const char * ap_init_virtual_host(apr_pool_t *p, const char *hostname, server_rec *main_server, server_rec **ps)
void * ap_set_config_vectors(server_rec *server, ap_conf_vector_t *section_vector, const char *section, module *mod, apr_pool_t *pconf)
ap_conf_vector_t * ap_create_conn_config(apr_pool_t *p)
ap_conf_vector_t * ap_create_per_dir_config(apr_pool_t *p)
int ap_run_pre_connection(conn_rec *c, void *csd)
void ap_hook_create_connection(ap_HOOK_create_connection_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_pre_connection(ap_HOOK_pre_connection_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
static apr_hash_t * errorlog_hash
static const char * dirsection(cmd_parms *cmd, void *mconfig, const char *arg)
static void core_child_init(apr_pool_t *pchild, server_rec *s)
#define AP_LIMIT_REQ_BODY_UNSET
static const char * set_http_method(cmd_parms *cmd, void *conf, const char *arg)
static apr_array_header_t * saved_server_config_defines
static const char * set_access_name(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_recursion_limit(cmd_parms *cmd, void *dummy, const char *arg1, const char *arg2)
static const char * start_cond_section(cmd_parms *cmd, void *mconfig, const char *arg)
static const char * set_etag_bits(cmd_parms *cmd, void *mconfig, const char *args_p)
static char * unclosed_directive(cmd_parms *cmd)
static enum server_token_type ap_server_tokens
static char errordocument_default
static const char * set_limit_xml_req_body(cmd_parms *cmd, void *conf_, const char *arg)
static void init_config_defines(apr_pool_t *pconf)
static int core_map_to_storage(request_rec *r)
static const char * set_protocols(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_max_reversals(cmd_parms *cmd, void *conf_, const char *arg)
#define AP_MAX_LIMIT_XML_BODY
static const char * set_runtime_dir(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_serverpath(cmd_parms *cmd, void *dummy, const char *arg)
static void core_insert_filter(request_rec *r)
static void set_banner(apr_pool_t *pconf)
static const char * set_content_md5(cmd_parms *cmd, void *d_, int arg)
static const char * set_enable_sendfile(cmd_parms *cmd, void *d_, const char *arg)
static int core_upgrade_handler(request_rec *r)
static apr_status_t reset_request_notes(void *dummy)
static const char * set_protocol(cmd_parms *cmd, void *dummy, const char *arg)
static char * server_banner
static void * merge_core_dir_configs(apr_pool_t *a, void *basev, void *newv)
static apr_array_header_t * parse_errorlog_string(apr_pool_t *p, const char *s, const char **err, int is_main_fmt)
static const char * set_override(cmd_parms *cmd, void *d_, const char *l)
static const char * set_use_canonical_phys_port(cmd_parms *cmd, void *d_, const char *arg)
static char * parse_errorlog_misc_string(apr_pool_t *p, ap_errorlog_format_item *it, const char **sa)
static int sys_privileges
static const char * set_cgi_var(cmd_parms *cmd, void *d_, const char *var, const char *rule_)
static const char * set_allow_opts(cmd_parms *cmd, allow_options_t *opts, const char *l)
static const char * set_flush_max_threshold(cmd_parms *cmd, void *d_, const char *arg)
static char * parse_errorlog_item(apr_pool_t *p, ap_errorlog_format_item *it, const char **sa)
static const char * set_max_ranges(cmd_parms *cmd, void *conf_, const char *arg)
static const char * urlsection(cmd_parms *cmd, void *mconfig, const char *arg)
static apr_random_t * rng
static int core_create_req(request_rec *r)
static const char * set_flush_max_pipelined(cmd_parms *cmd, void *d_, const char *arg)
static const char * set_accf_map(cmd_parms *cmd, void *dummy, const char *iproto, const char *iaccf)
static const char * set_serv_tokens(cmd_parms *cmd, void *dummy, const char *arg)
static const char * server_description
static int core_check_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static int test_ifmod_section(cmd_parms *cmd, const char *arg)
static const char * set_errorlog_format(cmd_parms *cmd, void *dummy, const char *arg1, const char *arg2)
static const char * set_limit_req_fieldsize(cmd_parms *cmd, void *dummy, const char *arg)
#define AP_DEFAULT_LIMIT_XML_BODY
static void * create_core_dir_config(apr_pool_t *a, char *dir)
static void core_optional_fn_retrieve(void)
static const char * set_regex_default_options(cmd_parms *cmd, void *dummy, const char *arg)
static void log_backtrace(const request_rec *r)
static const char * set_core_server_flag(cmd_parms *cmd, void *s_, int flag)
static const char * set_limit_req_fields(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_options(cmd_parms *cmd, void *d_, const char *l)
static conn_rec * core_create_conn(apr_pool_t *ptrans, server_rec *server, apr_socket_t *csd, long id, void *sbh, apr_bucket_alloc_t *alloc)
static const char * set_signature_flag(cmd_parms *cmd, void *d_, const char *arg)
static apr_OFN_access_compat_ap_satisfies_t * access_compat_ap_satisfies
static APR_INLINE int do_double_reverse(int double_reverse, const char *remote_host, apr_sockaddr_t *client_addr, apr_pool_t *pool)
#define AP_FLUSH_MAX_THRESHOLD
#define AP_CONTENT_MD5_OFF
static int test_iffile_section(cmd_parms *cmd, const char *arg)
static const char * no_set_limit(cmd_parms *cmd, void *conf_, const char *arg, const char *arg2)
#define AP_CONTENT_MD5_ON
static int default_handler(request_rec *r)
static const char * set_accept_path_info(cmd_parms *cmd, void *d_, const char *arg)
static const char * set_limit_req_line(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_server_root(cmd_parms *cmd, void *dummy, const char *arg)
static void register_hooks(apr_pool_t *p)
static const char * set_override_list(cmd_parms *cmd, void *d_, int argc, char *const argv[])
static int core_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static const char * server_hostname_port(cmd_parms *cmd, void *dummy, const char *arg)
static const char * include_config(cmd_parms *cmd, void *dummy, const char *name)
static const char * set_sethandler(cmd_parms *cmd, void *d_, const char *arg_)
static int core_create_proxy_req(request_rec *r, request_rec *pr)
static apr_OFN_authn_ap_auth_type_t * authn_ap_auth_type
static void * create_core_server_config(apr_pool_t *a, server_rec *s)
static int check_errorlog_dir(apr_pool_t *p, server_rec *s)
static const char * ifsection(cmd_parms *cmd, void *mconfig, const char *arg)
static apr_status_t core_dirwalk_stat(apr_finfo_t *finfo, request_rec *r, apr_int32_t wanted)
static const char * set_define(cmd_parms *cmd, void *dummy, const char *name, const char *value)
static const char * set_timeout(cmd_parms *cmd, void *dummy, const char *arg)
int(* test_cond_section_fn)(cmd_parms *cmd, const char *arg)
static const char * set_document_root(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_trace_enable(cmd_parms *cmd, void *dummy, const char *arg1)
static const char * set_max_overlaps(cmd_parms *cmd, void *conf_, const char *arg)
static const char * generate_error(cmd_parms *cmd, void *dummy, const char *arg)
apr_OFN_ap_logio_add_bytes_out_t * ap__logio_add_bytes_out
#define AP_CONTENT_MD5_UNSET
static int test_ifdefine_section(cmd_parms *cmd, const char *arg)
static const char * set_http_protocol_options(cmd_parms *cmd, void *dummy, const char *arg)
#define AP_DEFAULT_LIMIT_REQ_BODY
static const char * set_hostname_lookups(cmd_parms *cmd, void *d_, const char *arg)
static const char * virtualhost_section(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_allow2f(cmd_parms *cmd, void *d_, const char *arg)
#define AP_ACCEPT_PATHINFO_UNSET
static int reorder_sorter(const void *va, const void *vb)
static const char * set_merge_trailers(cmd_parms *cmd, void *dummy, int arg)
static int core_upgrade_storage(request_rec *r)
static const char * set_default_type(cmd_parms *cmd, void *d_, const char *arg)
static int reset_config_defines(void *dummy)
static apr_status_t core_insert_network_bucket(conn_rec *c, apr_bucket_brigade *bb, apr_socket_t *socket)
apr_OFN_authz_some_auth_required_t * ap__authz_ap_some_auth_required
static const char * set_qualify_redirect_url(cmd_parms *cmd, void *d_, int flag)
static const char * set_use_canonical_name(cmd_parms *cmd, void *d_, const char *arg)
#define RAND_RANGE(__n, __min, __max, __tmax)
static char * missing_container_arg(cmd_parms *cmd)
static const char * unset_define(cmd_parms *cmd, void *dummy, const char *name)
static apr_size_t num_request_notes
static apr_table_t * server_config_defined_vars
static int core_pre_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
static const char * set_cgi_pass_auth(cmd_parms *cmd, void *d_, int flag)
int ap_pre_connection(conn_rec *c, void *csd)
static const char * set_server_alias(cmd_parms *cmd, void *dummy, const char *arg)
static int core_override_type(request_rec *r)
static int test_ifsection_section(cmd_parms *cmd, const char *arg)
static int do_nothing(request_rec *r)
static apr_OFN_ap_ident_lookup_t * ident_lookup
static const char * set_server_string_slot(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_error_document(cmd_parms *cmd, void *conf_, const char *errno_str, const char *msg)
static const char * set_enable_mmap(cmd_parms *cmd, void *d_, const char *arg)
#define AP_MAX_INCLUDE_DEPTH
static const ap_directive_t * find_parent(const ap_directive_t *dirp, const char *what)
static const char * filesection(cmd_parms *cmd, void *mconfig, const char *arg)
static apr_status_t reset_banner(void *dummy)
static const char * set_add_default_charset(cmd_parms *cmd, void *d_, const char *arg)
static void core_dump_config(apr_pool_t *p, server_rec *s)
static int core_pre_connection(conn_rec *c, void *csd)
static apr_OFN_authn_ap_auth_name_t * authn_ap_auth_name
#define AP_FLUSH_MAX_PIPELINED
static const char * set_limit_req_body(cmd_parms *cmd, void *conf_, const char *arg)
static void * merge_core_server_configs(apr_pool_t *p, void *basev, void *virtv)
static const char * set_loglevel(cmd_parms *cmd, void *config_, const char *arg_)
static apr_status_t core_get_pollfd_from_conn(conn_rec *c, struct apr_pollfd_t *pfd, apr_interval_time_t *ptimeout)
static int log_constant_item(const ap_errorlog_info *info, const char *arg, char *buf, int buflen)
static const char * set_read_buf_size(cmd_parms *cmd, void *d_, const char *arg)
static const command_rec core_cmds[]
static const char * set_protocols_honor_order(cmd_parms *cmd, void *dummy, const char *arg)
static int test_ifdirective_section(cmd_parms *cmd, const char *arg)
static apr_pool_t * pconf
const char * ap_parse_log_level(const char *str, int *val)
const char * ap_build_cont_config(apr_pool_t *p, apr_pool_t *temp_pool, cmd_parms *parms, ap_directive_t **current, ap_directive_t **curr_parent, char *orig_directive)
#define AP_INIT_TAKE1(directive, func, mconfig, where, help)
#define ap_get_module_config(v, m)
apr_status_t ap_open_htaccess(request_rec *r, const char *dir_name, const char *access_name, ap_configfile_t **conffile, const char **full_name)
ap_module_symbol_t ap_prelinked_module_symbols[]
void ap_set_module_loglevel(apr_pool_t *p, struct ap_logconf *l, int index, int level)
const char * ap_set_string_slot_lower(cmd_parms *cmd, void *struct_ptr, const char *arg)
#define AP_INIT_TAKE_ARGV(directive, func, mconfig, where, help)
const char * ap_process_fnmatch_configs(server_rec *s, const char *fname, ap_directive_t **conftree, apr_pool_t *p, apr_pool_t *ptemp, int optional)
void ap_hook_post_config(ap_HOOK_post_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
const char * ap_soak_end_container(cmd_parms *cmd, char *directive)
void ap_hook_test_config(ap_HOOK_test_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
struct ap_conf_vector_t ap_conf_vector_t
#define AP_DECLARE_MODULE(foo)
int ap_exists_directive(apr_pool_t *p, const char *name)
#define AP_INIT_FLAG(directive, func, mconfig, where, help)
const char * ap_set_deprecated(cmd_parms *cmd, void *struct_ptr, const char *arg)
void ap_hook_open_logs(ap_HOOK_open_logs_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define AP_INIT_ITERATE(directive, func, mconfig, where, help)
void ap_hook_check_config(ap_HOOK_check_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
char * ap_server_root_relative(apr_pool_t *p, const char *fname)
#define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help)
void ap_hook_handler(ap_HOOK_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
const char * ap_set_string_slot(cmd_parms *cmd, void *struct_ptr, const char *arg)
void ap_hook_pre_config(ap_HOOK_pre_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define AP_INIT_TAKE12(directive, func, mconfig, where, help)
void ap_merge_log_config(const struct ap_logconf *old_conf, struct ap_logconf *new_conf)
request_rec int int apr_table_t const char * path
const char * ap_set_flag_slot(cmd_parms *cmd, void *struct_ptr, int arg)
void ap_hook_optional_fn_retrieve(ap_HOOK_optional_fn_retrieve_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
const char * ap_walk_config(ap_directive_t *conftree, cmd_parms *parms, ap_conf_vector_t *section_vector)
void ap_reset_module_loglevels(struct ap_logconf *l, int val)
void ap_hook_child_init(ap_HOOK_child_init_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_open_htaccess(ap_HOOK_open_htaccess_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
const char server_rec * main_server
#define AP_INIT_TAKE2(directive, func, mconfig, where, help)
struct ap_logconf * ap_new_log_config(apr_pool_t *p, const struct ap_logconf *old)
void ap_get_server_revision(ap_version_t *version)
void ap_add_version_component(apr_pool_t *pconf, const char *component)
#define ap_default_port(r)
#define ap_http_scheme(r)
const char * ap_get_server_description(void)
#define DEFAULT_ACCESS_FNAME
#define ap_is_default_port(port, r)
const char * ap_get_server_banner(void)
#define AP_CORE_DECLARE_NONSTD
#define DEFAULT_ADD_DEFAULT_CHARSET_NAME
#define DOCUMENT_LOCATION
apr_status_t ap_pass_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket)
ap_filter_t * ap_add_input_filter(const char *name, void *ctx, request_rec *r, conn_rec *c)
ap_filter_t * ap_add_input_filter_handle(ap_filter_rec_t *f, void *ctx, request_rec *r, conn_rec *c)
ap_filter_rec_t * ap_register_output_filter(const char *name, ap_out_filter_func filter_func, ap_init_filter_func filter_init, ap_filter_type ftype)
ap_filter_t * ap_add_output_filter(const char *name, void *ctx, request_rec *r, conn_rec *c)
apr_status_t ap_filter_rec_t * ap_register_input_filter(const char *name, ap_in_filter_func filter_func, ap_init_filter_func filter_init, ap_filter_type ftype)
ap_filter_t * ap_add_output_filter_handle(ap_filter_rec_t *f, void *ctx, request_rec *r, conn_rec *c)
#define OPT_INC_WITH_EXEC
apr_status_t ap_run_get_pollfd_from_conn(conn_rec *c, struct apr_pollfd_t *pfd, apr_interval_time_t *ptimeout)
#define AP_SQ_NOT_SUPPORTED
#define AP_SENDFILE_ENABLED(x)
apr_port_t ap_get_server_port(const request_rec *r)
void ap_register_log_hooks(apr_pool_t *p)
ap_filter_rec_t * ap_subreq_core_filter_handle
apr_off_t ap_get_limit_req_body(const request_rec *r)
#define AP_ERRORLOG_FLAG_MESSAGE
void ap_add_file_conf(apr_pool_t *p, core_dir_config *conf, void *url_config)
int ap_exists_config_define(const char *name)
#define AP_ERRORLOG_FLAG_NULL_AS_HYPHEN
int ap_state_query(int query)
const char * ap_get_server_name(request_rec *r)
#define AP_DEFAULT_MAX_INTERNAL_REDIRECTS
ap_filter_rec_t * ap_content_length_filter_handle
apr_status_t ap_core_input_filter(ap_filter_t *f, apr_bucket_brigade *b, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
int ap_core_translate(request_rec *r)
#define ap_get_core_module_config(v)
apr_size_t ap_get_read_buf_size(const request_rec *r)
#define AP_CORE_MERGE_FLAG(field, to, base, over)
unsigned char allow_options_t
#define AP_CORE_CONFIG_UNSET
const char * ap_auth_name(request_rec *r)
const char * ap_add_if_conf(apr_pool_t *p, core_dir_config *conf, void *if_config)
apr_socket_t * ap_get_conn_socket(conn_rec *c)
#define AP_DEFAULT_MAX_SUBREQ_DEPTH
int ap_satisfies(request_rec *r)
void ap_set_server_protocol(server_rec *s, const char *proto)
int ap_is_recursion_limit_exceeded(const request_rec *r)
#define AP_ERRORLOG_FLAG_FIELD_SEP
const char * ap_document_root(request_rec *r)
#define AP_SQ_MS_INITIAL_STARTUP
apr_status_t ap_get_pollfd_from_conn(conn_rec *c, struct apr_pollfd_t *pfd, apr_interval_time_t *ptimeout)
const char * ap_limit_section(cmd_parms *cmd, void *dummy, const char *arg)
void ap_custom_response(request_rec *r, int status, const char *string)
const char * ap_get_remote_logname(request_rec *r)
const char * ap_get_server_protocol(server_rec *s)
void ap_add_per_dir_conf(server_rec *s, void *dir_config)
void ap_register_config_hooks(apr_pool_t *p)
apr_status_t ap_core_output_filter(ap_filter_t *f, apr_bucket_brigade *b)
apr_size_t ap_register_request_note(void)
void ap_add_per_url_conf(server_rec *s, void *url_config)
void ap_register_errorlog_handler(apr_pool_t *p, char *tag, ap_errorlog_handler_fn_t *handler, int flags)
apr_size_t ap_get_limit_xml_body(const request_rec *r)
int ap_allow_overrides(request_rec *r)
#define AP_CORE_CONFIG_OFF
ap_filter_rec_t * ap_core_output_filter_handle
void ap_core_reorder_directories(apr_pool_t *p, server_rec *s)
const char * ap_auth_type(request_rec *r)
void ap_hook_get_pollfd_from_conn(ap_HOOK_get_pollfd_from_conn_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
int ap_errorlog_handler_fn_t(const ap_errorlog_info *info, const char *arg, char *buf, int buflen)
void ** ap_get_request_note(request_rec *r, apr_size_t note_num)
#define AP_CORE_CONFIG_ON
#define AP_ERRORLOG_FLAG_REQUIRED
char * ap_construct_url(apr_pool_t *p, const char *uri, request_rec *r)
void ap_hook_insert_network_bucket(ap_HOOK_insert_network_bucket_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
const char * ap_get_server_name_for_url(request_rec *r)
unsigned long etag_components_t
#define ap_set_core_module_config(v, val)
ap_filter_rec_t * ap_core_input_filter_handle
int ap_allow_options(request_rec *r)
void ap_logs_child_init(apr_pool_t *p, server_rec *s)
int ap_open_logs(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s_main)
const char * ap_server_root
int ap_document_root_check
apr_array_header_t * ap_server_config_defines
const char * ap_runtime_dir
server_rec * ap_server_conf
const unsigned char * buf
void ap_hook_child_status(ap_HOOK_child_status_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
const char * ap_set_mutex(cmd_parms *cmd, void *dummy, const char *arg)
void ap_mutex_init(apr_pool_t *p)
void ap_dump_mutexes(apr_pool_t *p, server_rec *s, apr_file_t *out)
int ap_method_number_of(const char *method)
void ap_setup_make_content_type(apr_pool_t *pool)
void ap_set_accept_ranges(request_rec *r)
apr_status_t ap_get_protocol_upgrades(conn_rec *c, request_rec *r, server_rec *s, int report_all, const apr_array_header_t **pupgrades)
int ap_meets_conditions(request_rec *r)
int ap_method_register(apr_pool_t *p, const char *methname)
void ap_set_etag_fd(request_rec *r, apr_file_t *fd)
void ap_send_interim_response(request_rec *r, int send_headers)
int ap_index_of_response(int status)
void ap_set_content_length(request_rec *r, apr_off_t length)
apr_status_t ap_switch_protocol(conn_rec *c, request_rec *r, server_rec *s, const char *protocol)
const char * ap_get_protocol(conn_rec *c)
const char * ap_select_protocol(conn_rec *c, request_rec *r, server_rec *s, const apr_array_header_t *choices)
void ap_set_last_modified(request_rec *r)
void ap_set_content_type_ex(request_rec *r, const char *ct, int trusted)
void ap_setup_ssl_optional_fns(apr_pool_t *pool)
apr_status_t ap_content_length_filter(ap_filter_t *, apr_bucket_brigade *)
const char * ap_get_status_line(int status)
int ap_discard_request_body(request_rec *r)
ap_filter_rec_t * ap_old_write_func
apr_status_t ap_old_write_filter(ap_filter_t *f, apr_bucket_brigade *b)
void ap_setup_auth_internal(apr_pool_t *ptemp)
apr_status_t ap_sub_req_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
void ap_hook_dirwalk_stat(ap_HOOK_dirwalk_stat_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
int ap_directory_walk(request_rec *r)
int ap_file_walk(request_rec *r)
void ap_hook_translate_name(ap_HOOK_translate_name_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_map_to_storage(ap_HOOK_map_to_storage_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_fixups(ap_HOOK_fixups_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_allow_standard_methods(request_rec *r, int reset,...)
void ap_hook_create_request(ap_HOOK_create_request_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_type_checker(ap_HOOK_type_checker_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_insert_filter(ap_HOOK_insert_filter_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_update_mtime(request_rec *r, apr_time_t dependency_mtime)
const char apr_port_t port
void mpm_common_pre_config(apr_pool_t *pconf)
int ap_sys_privileges_handlers(int inc)
const char * ap_mpm_set_pidfile(cmd_parms *cmd, void *dummy, const char *arg)
const char * ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy, const char *arg)
void ap_mpm_dump_pidfile(apr_pool_t *p, apr_file_t *out)
void ap_core_child_status(server_rec *s, pid_t pid, ap_generation_t gen, int slot, mpm_child_status status)
const char * ap_mpm_set_max_requests(cmd_parms *cmd, void *dummy, const char *arg)
apr_status_t ap_mpm_end_gen_helper(void *unused)
const char * ap_mpm_set_thread_stacksize(cmd_parms *cmd, void *dummy, const char *arg)
const char * ap_mpm_set_max_mem_free(cmd_parms *cmd, void *dummy, const char *arg)
#define APR_ENOTENOUGHENTROPY
#define APR_BRIGADE_INSERT_TAIL(b, e)
apr_bucket apr_bucket_brigade * a
apr_brigade_flush void va_list va
apr_pool_t apr_dbd_t const char * query
apr_pool_t const char apr_dbd_t const char ** error
apr_pool_t apr_dbd_t apr_dbd_results_t ** res
const char apr_ssize_t int flags
#define APR_HOOK_LINK(name)
#define APR_HOOK_STRUCT(members)
#define APR_HOOK_REALLY_FIRST
APU_DECLARE_DATA apr_pool_t * apr_hook_global_pool
#define APR_HOOK_REALLY_LAST
apr_memcache_server_t * server
#define APR_OPTIONAL_HOOK(ns, name, pfn, aszPre, aszSucc, nOrder)
#define APR_RETRIEVE_OPTIONAL_FN(name)
#define APR_OPTIONAL_FN_TYPE(name)
const char apr_int32_t inc
#define AP_EXPR_FLAG_STRING_RESULT
#define ap_expr_parse_cmd(cmd, expr, flags, err, lookup_fn)
const char * ap_expr_str_exec(request_rec *r, const ap_expr_info_t *expr, const char **err)
void ap_expr_init(apr_pool_t *pool)
#define NONFATAL_OVERRIDE
#define HTTP_INTERNAL_SERVER_ERROR
#define HTTP_METHOD_NOT_ALLOWED
#define HTTP_SWITCHING_PROTOCOLS
#define HTTP_NOT_IMPLEMENTED
char * ap_response_code_string(request_rec *r, int error_index)
void ap_init_rng(apr_pool_t *p)
int ap_send_http_options(request_rec *r)
void ap_random_parent_after_fork(void)
#define MPM20_MODULE_STUFF
void ap_random_insecure_bytes(void *buf, apr_size_t size)
void ap_set_document_root(request_rec *r, const char *document_root)
int ap_is_directory(apr_pool_t *p, const char *name)
int ap_is_url(const char *u)
int ap_count_dirs(const char *path)
int ap_cstr_casecmp(const char *s1, const char *s2)
const char * ap_psignature(const char *prefix, request_rec *r)
const char * ap_parse_token_list_strict(apr_pool_t *p, const char *tok, apr_array_header_t **tokens, int skip_invalid)
char * ap_getword(apr_pool_t *p, const char **line, char stop)
#define ap_strrchr_c(s, c)
#define ap_strstr_c(s, c)
void ap_set_context_info(request_rec *r, const char *context_prefix, const char *context_document_root)
#define ap_strchr_c(s, c)
const char * ap_context_prefix(request_rec *r)
const char * ap_context_document_root(request_rec *r)
const char * ap_resolve_env(apr_pool_t *p, const char *word)
char * ap_make_dirstr_parent(apr_pool_t *p, const char *s)
apr_status_t ap_filepath_merge(char **newpath, const char *rootpath, const char *addpath, apr_int32_t flags, apr_pool_t *p)
int ap_find_token(apr_pool_t *p, const char *line, const char *tok)
int ap_is_matchexp(const char *str)
#define ap_escape_html(p, s)
void ap_str_tolower(char *s)
int ap_array_str_contains(const apr_array_header_t *array, const char *s)
ap_regex_t * ap_pregcomp(apr_pool_t *p, const char *pattern, int cflags)
apr_uint32_t ap_random_pick(apr_uint32_t min, apr_uint32_t max)
char * ap_getword_conf(apr_pool_t *p, const char **line)
#define NOT_IN_VIRTUALHOST
#define NOT_IN_DIR_CONTEXT
#define NOT_IN_DIR_LOC_FILE
const char * ap_check_cmd_context(cmd_parms *cmd, unsigned forbidden)
const char int apr_pool_t * pool
const char apr_int32_t flag
apr_seek_where_t apr_off_t * offset
const char apr_int32_t wanted
const char const char * addpath
#define APR_FILEPATH_SECUREROOT
#define APR_FILEPATH_TRUENAME
apr_array_header_t ** result
int strcasecmp(const char *a, const char *b)
#define APR_HASH_KEY_STRING
apr_vformatter_buff_t * c
const char apr_uint32_t * id
apr_uint32_t apr_pool_t apr_uint32_t apr_pollset_method_e method
apr_interval_time_t apr_int32_t * num
#define apr_pool_create(newpool, parent)
#define apr_pcalloc(p, size)
#define APR_ARRAY_IDX(ary, i, type)
const apr_array_header_t * first
apr_int32_t apr_int32_t apr_int32_t err
const char const char *const * args
apr_int64_t apr_interval_time_t
apr_size_t apr_size_t max
#define apr_time_from_sec(sec)
const char * ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip)
const char * ap_get_useragent_host(request_rec *r, int type, int *str_is_ip)
#define REMOTE_DOUBLE_REV
apr_status_t ap_mpm_query(int query_code, int *result)
#define AP_MPMQ_IS_THREADED
#define AP_REQ_DEFAULT_PATH_INFO
#define AP_REQ_ACCEPT_PATH_INFO
#define AP_REQ_REJECT_PATH_INFO
static apr_pool_t * pchild
Apache connection library.
#define AP_CONDITION_ELSEIF
#define HOSTNAME_LOOKUP_ON
#define ENABLE_SENDFILE_UNSET
#define ENABLE_SENDFILE_ON
#define ADD_DEFAULT_CHARSET_OFF
#define ENABLE_MMAP_UNSET
#define AP_HTTP_CONFORMANCE_STRICT
#define AP_HTTP09_DISABLE
#define USE_CANONICAL_NAME_ON
#define ADD_DEFAULT_CHARSET_UNSET
#define USE_CANONICAL_NAME_DNS
#define AP_TRACE_EXTENDED
#define USE_CANONICAL_PHYS_PORT_OFF
#define AP_MAXRANGES_NORANGES
#define AP_CONDITION_ELSE
#define AP_HTTP_CONFORMANCE_UNSET
#define ADD_DEFAULT_CHARSET_ON
#define HOSTNAME_LOOKUP_DOUBLE
#define USE_CANONICAL_PHYS_PORT_ON
#define USE_CANONICAL_NAME_UNSET
#define AP_HTTP_METHODS_UNSET
#define AP_MAXRANGES_UNLIMITED
#define AP_MERGE_TRAILERS_DISABLE
#define AP_CGI_PASS_AUTH_ON
#define AP_CGI_PASS_AUTH_UNSET
#define AP_HTTP_METHODS_REGISTERED
#define USE_CANONICAL_NAME_OFF
#define AP_MERGE_TRAILERS_UNSET
#define AP_MERGE_TRAILERS_ENABLE
#define ENABLE_SENDFILE_OFF
#define HOSTNAME_LOOKUP_UNSET
#define AP_MAXRANGES_DEFAULT
#define AP_CGI_PASS_AUTH_OFF
#define HOSTNAME_LOOKUP_OFF
#define AP_HTTP_CONFORMANCE_UNSAFE
#define USE_CANONICAL_PHYS_PORT_UNSET
#define AP_HTTP_METHODS_LENIENT
#define AP_MAXRANGES_UNSET
static int authz_some_auth_required(request_rec *r)
mod_core private header file
static const char * ap_ident_lookup(request_rec *r)
static void ap_logio_add_bytes_out(conn_rec *c, apr_off_t bytes)
Proxy Extension Module for Apache.
Shared Object Loader Extension Module for Apache.
Multi-Processing Modules functions.
Apache scoreboard library.
const char * ap_scoreboard_fname
void ap_init_scoreboard(void *shared_score)
int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t)
int ap_update_child_status(ap_sb_handle_t *sbh, int status, request_rec *r)
const char * ap_set_scoreboard(cmd_parms *cmd, void *dummy, const char *arg)
void ap_hook_pre_mpm(ap_HOOK_pre_mpm_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
const char * ap_set_extended_status(cmd_parms *cmd, void *dummy, int arg)
const char * ap_set_reqtail(cmd_parms *cmd, void *dummy, int arg)
Structure used to build the config tree.
struct ap_directive_t * parent
ap_errorlog_handler_fn_t * func
This structure is used for recording information about the registered filters. It associates a name w...
This structure is used to assign symbol names to module pointers.
The numeric version information is broken out into fields within this structure.
Structure to store things which are per connection.
apr_sockaddr_t * client_addr
apr_sockaddr_t * local_addr
struct apr_bucket_alloc_t * bucket_alloc
signed int double_reverse
Per-directory configuration.
unsigned add_default_charset
apr_hash_t * response_code_exprs
const char * output_filters
apr_array_header_t * sec_file
etag_components_t etag_add
const char * input_filters
allow_options_t override_opts
const char * add_default_charset_name
server_signature_e server_signature
apr_hash_t * cgi_var_rules
unsigned int hostname_lookups
apr_array_header_t * refs
apr_array_header_t * sec_if
unsigned int condition_ifelse
etag_components_t etag_remove
unsigned use_canonical_name
ap_expr_info_t * expr_handler
unsigned int enable_sendfile
unsigned int qualify_redirect_url
unsigned int use_canonical_phys_port
apr_table_t * override_list
unsigned int allow_encoded_slashes
ap_expr_info_t * condition
unsigned int cgi_pass_auth
allow_options_t opts_remove
unsigned int decode_encoded_slashes
etag_components_t etag_bits
Per-request configuration.
char ** response_code_strings
const char * document_root
const char * context_document_root
struct apr_bucket_brigade * bb
const char * context_prefix
const char * ap_document_root
apr_array_header_t * error_log_conn
apr_array_header_t * error_log_req
apr_array_header_t * sec_dir
apr_int32_t flush_max_pipelined
int protocols_honor_order
apr_array_header_t * protocols
apr_size_t flush_max_threshold
unsigned int merge_slashes
apr_array_header_t * error_log_format
unsigned int strict_host_check
apr_array_header_t * sec_url
A structure that represents the current request.
struct ap_filter_t * output_filters
apr_sockaddr_t * useragent_addr
char * canonical_filename
struct ap_conf_vector_t * request_config
struct ap_conf_vector_t * per_dir_config
apr_table_t * headers_out
A structure to store information for each virtual server.
struct ap_conf_vector_t * module_config
apr_status_t apr_socket_close(apr_socket_t *thesocket)
apr_status_t apr_socket_opt_set(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)
apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t)
apr_status_t apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t)
Utilities for EBCDIC conversion.
char * ap_md5digest(apr_pool_t *p, apr_file_t *infile)
Apache Mutex support library.
Apache date-time handling functions.
const char * ap_set_name_virtual_host(cmd_parms *cmd, void *dummy, const char *arg)
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray