httpd.h revision efd83d1dd1a25688a3093c5a542ae16bacef62dd
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/* Licensed to the Apache Software Foundation (ASF) under one or more
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * contributor license agreements. See the NOTICE file distributed with
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * this work for additional information regarding copyright ownership.
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * The ASF licenses this file to You under the Apache License, Version 2.0
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * (the "License"); you may not use this file except in compliance with
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * the License. You may obtain a copy of the License at
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Unless required by applicable law or agreed to in writing, software
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * distributed under the License is distributed on an "AS IS" BASIS,
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * See the License for the specific language governing permissions and
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * limitations under the License.
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * @brief HTTP Daemon routines
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * @defgroup APACHE Apache
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * Top level group of which all other groups are a member
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * @defgroup APACHE_MODS Apache Modules
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * Top level group for Apache Modules
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * @defgroup APACHE_OS Operating System Specific
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * @defgroup APACHE_CORE Apache Core
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding * @defgroup APACHE_CORE_DAEMON HTTP Daemon Routine
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding/* XXX - We need to push more stuff to other .h files, or even .c files, to
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * make this file smaller
7e79e8fd53348f9fc6e8009a4a2522425ab6f08ffielding/* Headers in which EVERYONE has an interest... */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/* Note: apr_uri.h is also included, see below */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fieldingextern "C" {
b6055b7832a0e4d0818416252fff5925aaebae4brbb/* ----------------------------- config dir ------------------------------ */
48d7c43629323c8d5ee9f7bd0d194de0a376b391rbb/** Define this to be the default server home dir. Most things later in this
d4f1d9c1ff112a8ab9bee31f196973761329b236rbb * file with a relative pathname will have this added.
48d7c43629323c8d5ee9f7bd0d194de0a376b391rbb/** Set default for OS/2 file system */
fdeba8dafd227781a897c772905bb32197e92797trawick/** Set default for Windows file system */
48d7c43629323c8d5ee9f7bd0d194de0a376b391rbb/** Set the default for NetWare */
d41217398f0e1031adbb6f5bd37f45737c805deftrawick/** Set for all other OSs */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#endif /* HTTPD_ROOT */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * --------- You shouldn't have to edit anything below this line ----------
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Any modifications to any defaults not defined above should be done in the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * respective configuration file.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Default location of documents. Can be overridden by the DocumentRoot
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * directive.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/* Set default for OS/2 file system */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/* Set default for non OS/2 file system */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#endif /* DOCUMENT_LOCATION */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Maximum number of dynamically loaded modules */
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm/** Default administrator's address */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The name of the log files */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#endif /* DEFAULT_ERRORLOG */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Define this to be what your per-directory security files are called */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/* Set default for OS/2 file system */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#endif /* DEFAULT_ACCESS_FNAME */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The name of the server config file */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The default path for CGI scripts if none is currently set */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define DEFAULT_PATH "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The path to the suExec wrapper, can be overridden in Configuration */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The timeout for waiting for messages */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The timeout for waiting for keepalive timeout until next request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The number of requests to entertain per connection */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Limits on the size of various request items. These limits primarily
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * exist to prevent simple denial-of-service attacks on a server based
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * on misuse of the protocol. The recommended values will depend on the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * nature of the server resources -- CGI scripts and database backends
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * might require large values, but most servers could get by with much
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * smaller limits than we use below. The request message body size can
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * be limited by the per-dir config directive LimitRequestBody.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Internal buffer sizes are two bytes more than the DEFAULT_LIMIT_REQUEST_LINE
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * and DEFAULT_LIMIT_REQUEST_FIELDSIZE below, which explains the 8190.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * These two limits can be lowered or raised by the server config
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * directives LimitRequestLine and LimitRequestFieldsize, respectively.
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm * DEFAULT_LIMIT_REQUEST_FIELDS can be modified or disabled (set = 0) by
8f8ec0957334f50b7ac11359f90490ee467258eedreid * the server config directive LimitRequestFields.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** default limit on bytes in Request-Line (Method+URI+HTTP-version) */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** default limit on bytes in any one header field */
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm/** default limit on number of request header fields */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * The default default character set name to add if AddDefaultCharset is
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * enabled. Overridden with AddDefaultCharsetName.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define DEFAULT_ADD_DEFAULT_CHARSET_NAME "iso-8859-1"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** default HTTP Server protocol */
74b39333600dee3260355ad3a06e36ef6c61c8f1dreid/* ------------------ stuff that modules are allowed to look at ----------- */
74b39333600dee3260355ad3a06e36ef6c61c8f1dreid/** Define this to be what your HTML directory content files are called */
74b39333600dee3260355ad3a06e36ef6c61c8f1dreid/** The name of the MIME types file */
d17890657bc529b3f9db20e5546511182b829565dreid * Define the HTML doctype strings centrally.
d17890657bc529b3f9db20e5546511182b829565dreid/** HTML 2.0 Doctype */
d17890657bc529b3f9db20e5546511182b829565dreid#define DOCTYPE_HTML_2_0 "<!DOCTYPE HTML PUBLIC \"-//IETF//" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "DTD HTML 2.0//EN\">\n"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** HTML 3.2 Doctype */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define DOCTYPE_HTML_3_2 "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "DTD HTML 3.2 Final//EN\">\n"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** HTML 4.0 Strict Doctype */
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm#define DOCTYPE_HTML_4_0S "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "DTD HTML 4.0//EN\"\n" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** HTML 4.0 Transitional Doctype */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define DOCTYPE_HTML_4_0T "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "DTD HTML 4.0 Transitional//EN\"\n" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** HTML 4.0 Frameset Doctype */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define DOCTYPE_HTML_4_0F "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "DTD HTML 4.0 Frameset//EN\"\n" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "\"http://www.w3.org/TR/REC-html40/frameset.dtd\">\n"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** XHTML 1.0 Strict Doctype */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define DOCTYPE_XHTML_1_0S "<!DOCTYPE html PUBLIC \"-//W3C//" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "DTD XHTML 1.0 Strict//EN\"\n" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "xhtml1-strict.dtd\">\n"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** XHTML 1.0 Transitional Doctype */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define DOCTYPE_XHTML_1_0T "<!DOCTYPE html PUBLIC \"-//W3C//" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "DTD XHTML 1.0 Transitional//EN\"\n" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "xhtml1-transitional.dtd\">\n"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** XHTML 1.0 Frameset Doctype */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define DOCTYPE_XHTML_1_0F "<!DOCTYPE html PUBLIC \"-//W3C//" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "DTD XHTML 1.0 Frameset//EN\"\n" \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding "xhtml1-frameset.dtd\">"
0e6e93183d91142d7cf9ffbf502114ff77bd9e19ben/** Internal representation for a HTTP protocol number, e.g., HTTP/1.1 */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define HTTP_VERSION(major,minor) (1000*(major)+(minor))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Major part of HTTP protocol */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Minor part of HTTP protocol */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/* -------------- Port number for server running standalone --------------- */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** default HTTP Port */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** default HTTPS Port */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Check whether @a port is the default port for the request @a r.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @param port The port number
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @param r The request
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @see #ap_default_port
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define ap_is_default_port(port,r) ((port) == ap_default_port(r))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Get the default port for a request (which depends on the scheme).
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @param r The request
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Get the scheme for a request.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @param r The request
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The default string length */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The length of a Huge string */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The size of the server's internal read-write buffers */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The max number of regex captures that can be expanded by ap_pregsub */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * APR_HAS_LARGE_FILES introduces the problem of spliting sendfile into
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * mutiple buckets, no greater than MAX(apr_size_t), and more granular
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm * than that in case the brigade code/filters attempt to read it directly.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * ### 16mb is an invention, no idea if it is reasonable.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Special Apache error codes. These are basically used
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * in http_main.c so we can keep track of various errors.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** a normal exit */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** A fatal error arising during the server's init sequence */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** The child died during its init sequence */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * The child exited due to a resource shortage.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * The parent should limit the rate of forking until
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * the situation is resolved.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * A fatal error, resulting in the whole server aborting.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * If a child exits with this error, the parent process
10a4cdd68ef1ca0e54af296fe1d08ac00150c90bwrowe * considers this a server-wide fatal error and aborts.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Stuff marked #AP_DECLARE is part of the API, and intended for use
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * by modules. Its purpose is to allow us to add attributes that
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm * particular platforms or compilers require to every exported function.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Stuff marked #AP_DECLARE_NONSTD is part of the API, and intended for
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * use by modules. The difference between #AP_DECLARE and
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * #AP_DECLARE_NONSTD is that the latter is required for any functions
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * which use varargs or are used via indirect function call. This
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * is to accomodate the two calling conventions in windows dlls.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @internal
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * modules should not use functions marked AP_CORE_DECLARE
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @internal
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * modules should not use functions marked AP_CORE_DECLARE_NONSTD
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @brief The numeric version information is broken out into fields within this
8f8ec0957334f50b7ac11359f90490ee467258eedreid * structure.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fieldingtypedef struct {
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding const char *add_string; /**< additional string like "-dev" */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Return httpd's version information in a numeric form.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @param version Pointer to a version structure for returning the version
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * information.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanfAP_DECLARE(void) ap_get_server_revision(ap_version_t *version);
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * Get the server banner in a form suitable for sending over the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * network, with the level of information controlled by the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * ServerTokens directive.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @return The server banner
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * Get the server description in a form suitable for local displays,
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * status reports, or logging. This includes the detailed server
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * version and information about some modules. It is not affected
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * by the ServerTokens directive.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @return The server description
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanfAP_DECLARE(const char *) ap_get_server_description(void);
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * Add a component to the server description and banner strings
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @param pconf The pool to allocate the component from
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @param component The string to add
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanfAP_DECLARE(void) ap_add_version_component(apr_pool_t *pconf, const char *component);
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * Get the date a time that the server was built
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @return The server build time string
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf/* non-HTTP status codes returned by hooks */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf#define DONE -2 /**< Module has served the response completely
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * - it's safe to die() with no more output
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf#define SUSPENDED -3 /**< Module will handle the remainder of the request.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * The core will never invoke the request again, */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf/** Returned by the bottom-most filter if no data was written.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @see ap_pass_brigade(). */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf/** Returned by the bottom-most filter if no data was read.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @see ap_get_brigade(). */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Returned by any filter if the filter chain encounters an error
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * and has already dealt with the error response.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @defgroup HTTP_Status HTTP Status Codes
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * The size of the static array in http_protocol.c for storing
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * all of the potential response status-lines (a sparse table).
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * A future version should dynamically generate the apr_table_t at startup.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** is the status code informational */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define ap_is_HTTP_INFO(x) (((x) >= 100)&&((x) < 200))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** is the status code OK ?*/
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm#define ap_is_HTTP_SUCCESS(x) (((x) >= 200)&&((x) < 300))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** is the status code a redirect */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define ap_is_HTTP_REDIRECT(x) (((x) >= 300)&&((x) < 400))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** is the status code a error (client or server) */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define ap_is_HTTP_ERROR(x) (((x) >= 400)&&((x) < 600))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** is the status code a client error */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define ap_is_HTTP_CLIENT_ERROR(x) (((x) >= 400)&&((x) < 500))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** is the status code a server error */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define ap_is_HTTP_SERVER_ERROR(x) (((x) >= 500)&&((x) < 600))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** is the status code a (potentially) valid response code? */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define ap_is_HTTP_VALID_RESPONSE(x) (((x) >= 100)&&((x) < 600))
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** should the status code drop the connection */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding (((x) == HTTP_BAD_REQUEST) || \
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @defgroup Methods List of Methods recognized by the server
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @ingroup APACHE_CORE_DAEMON
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @brief Methods recognized (but not necessarily handled) by the server.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * These constants are used in bit shifting masks of size int, so it is
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * unsafe to have more methods than bits in an int. HEAD == M_GET.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * This list must be tracked by the list in http_protocol.c in routine
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * ap_method_name_of().
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define M_PATCH 7 /** no rfc(!) ### remove this one? */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define M_VERSION_CONTROL 15 /** RFC 3253: WebDAV Versioning */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * METHODS needs to be equal to the number of bits
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * we are using for limit masks.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * The method mask bit to shift for anding with a bitmask.
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf/** @see ap_method_list_t */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * @struct ap_method_list_t
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @brief Structure for handling HTTP methods.
0942697a9b5de44865676345a3828741c827efe6rbb * Methods known to the server are accessed via a bitmask shortcut;
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * extension methods are handled by an array.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The bitmask used for known methods */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** the array used for extension methods */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @defgroup module_magic Module Magic mime types
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Magic for mod_cgi[d] */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Magic for mod_include */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define INCLUDES_MAGIC_TYPE "text/x-server-parsed-html"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Magic for mod_include */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#define INCLUDES_MAGIC_TYPE3 "text/x-server-parsed-html3"
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Magic for mod_dir */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/* Just in case your linefeed isn't the one the other end is expecting. */
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm/** linefeed */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** carrige return */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** carrige return /Line Feed Combo */
1cd6db66efebdf2540a2975bae4173dc68569ff6dreid#else /* APR_CHARSET_EBCDIC */
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm/* For platforms using the EBCDIC charset, the transition ASCII->EBCDIC is done
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * in the buff package (bread/bputs/bwrite). Everywhere else, we use
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * "native EBCDIC" CR and NL characters. These are therefore
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * defined as
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * '\r' and '\n'.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding#endif /* APR_CHARSET_EBCDIC */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Useful for common code with either platform charset. */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @defgroup values_request_rec_body Possible values for request_rec.read_body
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Possible values for request_rec.read_body (set by handling module):
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Send 413 error if message has any body */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf/** Send 411 error if body without Content-Length */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf/** If chunked, remove the chunks for me. */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** @} // values_request_rec_body */
51af95bb51b5084e883bad250b2afa2838e9ceebfielding * @defgroup values_request_rec_used_path_info Possible values for request_rec.used_path_info
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm * @ingroup APACHE_CORE_DAEMON
93b653492fb3b4b65006e95a435629d806a9e589rbb * Possible values for request_rec.used_path_info:
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Accept the path_info from the request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Return a 404 error if path_info was given */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/** Module may chose to use the given path_info */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf/** @} // values_request_rec_used_path_info */
91583d2e9c0550f539ea6f4dedf051979ad1ad88fanf * Things which may vary per file-lookup WITHIN a request ---
91583d2e9c0550f539ea6f4dedf051979ad1ad88fanf * e.g., state of MIME config. Basically, the name of an object, info
91583d2e9c0550f539ea6f4dedf051979ad1ad88fanf * about the object, and any other info we may ahve which may need to
91583d2e9c0550f539ea6f4dedf051979ad1ad88fanf * change as we go poking around looking for it (e.g., overridden by
91583d2e9c0550f539ea6f4dedf051979ad1ad88fanf * .htaccess files).
91583d2e9c0550f539ea6f4dedf051979ad1ad88fanf * Note how the default state of almost all these things is properly
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * zero, so that allocating it with pcalloc does the right thing without
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * a whole lot of hairy initialization... so long as we are willing to
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * make the (fairly) portable assumption that the bit pattern of a NULL
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm * pointer is, in fact, zero.
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf * @brief This represents the result of calling htaccess; these are cached for
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf * each request.
45e5168aee4720a335af59306e297c1f58a82138fanf /** the directory to which this applies */
45e5168aee4720a335af59306e297c1f58a82138fanf const char *dir;
45e5168aee4720a335af59306e297c1f58a82138fanf /** the overrides allowed for the .htaccess file */
45e5168aee4720a335af59306e297c1f58a82138fanf /** the override options allowed for the .htaccess file */
45e5168aee4720a335af59306e297c1f58a82138fanf /** the configuration directives */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf /** the next one, or NULL if no more; N.B. never change this */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf/* The following four types define a hierarchy of activities, so that
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf * given a request_rec r you can write r->connection->server->process
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf * to get to the process_rec. While this reduces substantially the
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf * number of arguments that various hooks require beware that in
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf * threaded versions of the server you must consider multiplexing
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf * issues. */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf/** A structure that represents one process */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf/** A structure that represents a virtual server */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf/** A structure that represents one connection */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf/** A structure that represents the current request */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf/** A structure that represents the status of the current connection */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding/* ### would be nice to not include this from httpd.h ... */
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf/* This comes after we have defined the request_rec type */
5e4791fd54c10fdd77ca81bee8ac8398f16d6d6astoddard * @brief A structure that represents one process
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Global pool. Cleared upon normal exit */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Configuration pool. Cleared upon restart */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Number of command line arguments passed to the program */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The command line arguments */
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm const char * const *argv;
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The program name used to execute the program */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * @brief A structure that represents the current request
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The pool associated with the request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The connection to the client */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The virtual host for this request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Pointer to the redirected request if this is an external redirect */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Pointer to the previous request if this is an internal redirect */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Pointer to the main request if this is a sub-request
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /* Info about the request itself... we begin with stuff that only
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * protocol.c should ever touch...
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** First line of request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** HTTP/0.9, "simple" request (e.g. GET /foo\n w/no headers) */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** A proxy request (calculated during post_read_request/translate_name)
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * possible values PROXYREQ_NONE, PROXYREQ_PROXY, PROXYREQ_REVERSE,
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * PROXYREQ_RESPONSE
3d96ee83babeec32482c9082c9426340cee8c44dwrowe /** HEAD request, as opposed to GET */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Protocol string, as given to us, or HTTP/0.9 */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Protocol version number of protocol; 1.1 = 1001 */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Host, as set by full URI or Host: */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding const char *hostname;
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Time when the request started */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Status line, if set by script */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Status line */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /* Request method, two ways; also, protocol, etc.. Outside of protocol.c,
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * look, but don't touch.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Request method (eg. GET, HEAD, POST, etc.) */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding const char *method;
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** M_GET, M_POST, etc. */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * 'allowed' is a bitvector of the allowed methods.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * A handler must ensure that the request method is one that
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * it is capable of handling. Generally modules should DECLINE
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * any request methods they do not handle. Prior to aborting the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * handler like this the handler should set r->allowed to the list
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * of methods that it is willing to handle. This bitvector is used
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * to construct the "Allow:" header required for OPTIONS requests,
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * and HTTP_METHOD_NOT_ALLOWED and HTTP_NOT_IMPLEMENTED status codes.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Since the default_handler deals with OPTIONS, all modules can
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * usually decline to deal with OPTIONS. TRACE is always allowed,
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * modules don't need to set it explicitly.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Since the default_handler will always handle a GET, a
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * module which does *not* implement GET should probably return
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * HTTP_METHOD_NOT_ALLOWED. Unfortunately this means that a Script GET
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * handler can't be installed by mod_actions.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Array of extension methods */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** List of allowed methods */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** byte count in stream is for body */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** body byte count, for easy access */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Last modified time of the requested resource */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /* HTTP/1.1 connection-level features */
382fa07a63096c4a1aabfed36433ea5ac9c40ad0trawick /** sending chunked transfer-coding */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The Range: header */
382fa07a63096c4a1aabfed36433ea5ac9c40ad0trawick const char *range;
382fa07a63096c4a1aabfed36433ea5ac9c40ad0trawick /** The "real" content length */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Remaining bytes left to read from the request body */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Number of bytes that have been read from the request body */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Method for reading the request body
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * (eg. REQUEST_CHUNKED_ERROR, REQUEST_NO_BODY,
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * REQUEST_CHUNKED_DECHUNK, etc...) */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** reading chunked transfer-coding */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** is client waiting for a 100 response? */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /* MIME header environments, in and out. Also, an array containing
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * environment variables to be passed to subprocesses, so people can
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * write modules to add to that environment.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * The difference between headers_out and err_headers_out is that the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * latter are printed even on error, and persist across internal redirects
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * (so the headers printed for ErrorDocument handlers will have them).
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * The 'notes' apr_table_t is for notes from one module to another, with no
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * other set purpose in mind...
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** MIME header environment from the request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** MIME header environment for the response */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** MIME header environment for the response, printed even on errors and
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * persist across internal redirects */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Array of environment variables to be used for sub processes */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Notes from one module to another */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /* content_type, handler, content_encoding, and all content_languages
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * MUST be lowercased strings. They may be pointers to static strings;
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * they should not be modified in place.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The content-type for the current request */
51af95bb51b5084e883bad250b2afa2838e9ceebfielding const char *content_type; /* Break these out --- we dispatch on 'em */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The handler string that we use to call a handler function */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding const char *handler; /* What we *really* dispatch on */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** How to encode the data */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Array of strings representing the content languages */
dad234382d8424e1c5a30af2838e172aec9d6d1bdreid /** variant list validator (if negotiated) */
382fa07a63096c4a1aabfed36433ea5ac9c40ad0trawick /** If an authentication check was made, this gets set to the user name. */
e93ddd15fd44e7542b9ace8567852ab2b7604bc7dreid /** If an authentication check was made, this gets set to the auth type. */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** This response can not be cached */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** There is no local copy of this response */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /* What object is being requested (either directly, or via include
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * or content-negotiation mapping).
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The URI without any parsing performed */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The path portion of the URI */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The filename on disk corresponding to this response */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /* XXX: What does this mean? Please define "canonicalize" -aaron */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The true filename, we canonicalize r->filename if these don't match */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The PATH_INFO extracted from this request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The QUERY_ARGS extracted from this request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** finfo.protection (st_mode) set to zero if no such file */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** A struct containing the components of URI */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Flag for the handler to accept or reject path_info on
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * the current request. All modules should respect the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * AP_REQ_ACCEPT_PATH_INFO and AP_REQ_REJECT_PATH_INFO
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * values, while AP_REQ_DEFAULT_PATH_INFO indicates they
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * may follow existing conventions. This is set to the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * user's preference upon HOOK_VERY_FIRST of the fixups.
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf /* Various other config info which may change with .htaccess files
3926b3b7716683a1241c1ff6f8dd2f9c5073665afanf * These are config vectors, with one void* pointer for each module
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * (the thing pointed to being the module's business).
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Options set in config files, etc. */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** Notes on *this* request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * A linked list of the .htaccess configuration directives
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * accessed by this request.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * N.B. always add to the head of the list, _never_ to the end.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * that way, a sub request's list can (temporarily) point to a parent's list
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** A list of output filters to be used for this request */
382fa07a63096c4a1aabfed36433ea5ac9c40ad0trawick /** A list of input filters to be used for this request */
382fa07a63096c4a1aabfed36433ea5ac9c40ad0trawick /** A list of protocol level output filters to be used for this
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** A list of protocol level input filters to be used for this
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * request */
51af95bb51b5084e883bad250b2afa2838e9ceebfielding /** Optional request log level configuration. Will usually point
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * to a server or per_dir config, i.e. must be copied before
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * modifying */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf /** A flag to determine if the eos bucket has been sent yet */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding /** The optional kept body of the request. */
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf/* Things placed at the end of the record to avoid breaking binary
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * compatibility. It would be nice to remember to reorder the entire
b88f887ed5554d9050d97f9a56a89ae62bdbd906fanf * record to improve 64bit alignment the next time we need to break
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * binary compatibility for some other reason.
struct conn_rec {
/** used by http_vhost.c */
void *vhost_lookup_data;
char *remote_ip;
char *remote_host;
char *remote_logname;
int keepalives;
char *local_ip;
char *local_host;
long id;
void *sbh;
#if APR_HAS_THREADS
} conn_state_e;
struct conn_state_t {
conn_rec *c;
apr_pool_t *p;
struct server_addr_rec {
char *virthost;
struct ap_logconf {
int *module_levels;
int level;
struct server_rec {
const char *defn_name;
unsigned defn_line_number;
char *server_admin;
char *server_hostname;
char *error_fname;
int is_virtual;
int keep_alive_max;
int keep_alive;
const char *path;
int pathlen;
int limit_req_line;
int limit_req_fieldsize;
int limit_req_fields;
const char *server_scheme;
void *context;
typedef struct core_output_filter_ctx {
typedef struct core_filter_ctx {
} core_ctx_t;
typedef struct core_net_rec {
conn_rec *c;
} core_net_rec;
* Examine a field value (such as a media-/content-type) string and return
char stop);
const char *prefix);
int cflags);
* a macro, to avoid unistd.h dependency
const char *delim);
const char *timeout_parameter,
const char *default_time_unit);
* Given the name of an object in the file system determine if it is a directory - this version is symlink aware
#ifdef _OSD_POSIX
#ifdef AP_DEBUG
#ifdef DEBUG_SIGSTOP
extern int raise_sigstop_flags;
#define RAISE_SIGSTOP(x) do { \
#define RAISE_SIGSTOP(x)
#ifdef strtoul
Note that on some platforms (e.g., AIX with gcc, Solaris with gcc), string.h needs
#include <string.h>
#ifdef AP_DEBUG
#ifdef __cplusplus