httpd.h revision 4576c1a9ef54cd1e5555ee07d016a7f559f80338
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering/* Licensed to the Apache Software Foundation (ASF) under one or more
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * contributor license agreements. See the NOTICE file distributed with
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen * this work for additional information regarding copyright ownership.
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * The ASF licenses this file to You under the Apache License, Version 2.0
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * (the "License"); you may not use this file except in compliance with
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * the License. You may obtain a copy of the License at
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * http://www.apache.org/licenses/LICENSE-2.0
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * Unless required by applicable law or agreed to in writing, software
5430f7f2bc7330f3088b894166bf3524a067e3d8Lennart Poettering * distributed under the License is distributed on an "AS IS" BASIS,
5430f7f2bc7330f3088b894166bf3524a067e3d8Lennart Poettering * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * See the License for the specific language governing permissions and
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * limitations under the License.
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * @brief HTTP Daemon routines
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * @defgroup APACHE Apache HTTP Server
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering * Top level group of which all other groups are a member
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @defgroup APACHE_MODS Loadable modules
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * Top level group for modules
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @defgroup APACHE_OS Operating System Specific
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @defgroup APACHE_INTERNAL Internal interfaces
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @defgroup APACHE_CORE Core routines
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @defgroup APACHE_CORE_DAEMON HTTP Daemon Routine
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/* XXX - We need to push more stuff to other .h files, or even .c files, to
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * make this file smaller
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/* Headers in which EVERYONE has an interest... */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/* Note: apr_uri.h is also included, see below */
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering/* ----------------------------- config dir ------------------------------ */
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering/** Define this to be the default server home dir. Most things later in this
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering * file with a relative pathname will have this added.
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Set default for OS/2 file system */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Set default for Windows file system */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Set the default for NetWare */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Set for all other OSs */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define HTTPD_ROOT "/usr/local/apache"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#endif /* HTTPD_ROOT */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * --------- You shouldn't have to edit anything below this line ----------
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * Any modifications to any defaults not defined above should be done in the
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * respective configuration file.
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * Default location of documents. Can be overridden by the DocumentRoot
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/* Set default for OS/2 file system */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DOCUMENT_LOCATION HTTPD_ROOT "/docs"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/* Set default for non OS/2 file system */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DOCUMENT_LOCATION HTTPD_ROOT "/htdocs"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#endif /* DOCUMENT_LOCATION */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Maximum number of dynamically loaded modules */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Default administrator's address */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DEFAULT_ADMIN "[no address given]"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** The name of the log files */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#if defined(OS2) || defined(WIN32)
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DEFAULT_ERRORLOG "logs/error.log"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DEFAULT_ERRORLOG "logs/error_log"
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering#endif /* DEFAULT_ERRORLOG */
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering/** Define this to be what your per-directory security files are called */
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering/* Set default for OS/2 file system */
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering#endif /* DEFAULT_ACCESS_FNAME */
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering/** The name of the server config file */
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering#define SERVER_CONFIG_FILE "conf/httpd.conf"
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering/** The default path for CGI scripts if none is currently set */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DEFAULT_PATH "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** The path to the suExec wrapper, can be overridden in Configuration */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define SUEXEC_BIN HTTPD_ROOT "/bin/suexec"
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering/** The timeout for waiting for messages */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** The timeout for waiting for keepalive timeout until next request */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#ifndef DEFAULT_KEEPALIVE_TIMEOUT
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DEFAULT_KEEPALIVE_TIMEOUT 5
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** The number of requests to entertain per connection */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * Limits on the size of various request items. These limits primarily
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * exist to prevent simple denial-of-service attacks on a server based
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * on misuse of the protocol. The recommended values will depend on the
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * nature of the server resources -- CGI scripts and database backends
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * might require large values, but most servers could get by with much
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * smaller limits than we use below. The request message body size can
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * be limited by the per-dir config directive LimitRequestBody.
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * Internal buffer sizes are two bytes more than the DEFAULT_LIMIT_REQUEST_LINE
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * and DEFAULT_LIMIT_REQUEST_FIELDSIZE below, which explains the 8190.
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * These two limits can be lowered or raised by the server config
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * directives LimitRequestLine and LimitRequestFieldsize, respectively.
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * DEFAULT_LIMIT_REQUEST_FIELDS can be modified or disabled (set = 0) by
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * the server config directive LimitRequestFields.
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** default limit on bytes in Request-Line (Method+URI+HTTP-version) */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#ifndef DEFAULT_LIMIT_REQUEST_LINE
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DEFAULT_LIMIT_REQUEST_LINE 8190
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering/** default limit on bytes in any one header field */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#ifndef DEFAULT_LIMIT_REQUEST_FIELDSIZE
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DEFAULT_LIMIT_REQUEST_FIELDSIZE 8190
667c24a6a86a5a26a906b7477ae81dcf4c73e64eLennart Poettering/** default limit on number of request header fields */
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering * The default default character set name to add if AddDefaultCharset is
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering * enabled. Overridden with AddDefaultCharsetName.
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering#define DEFAULT_ADD_DEFAULT_CHARSET_NAME "iso-8859-1"
667c24a6a86a5a26a906b7477ae81dcf4c73e64eLennart Poettering/** default HTTP Server protocol */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define AP_SERVER_PROTOCOL "HTTP/1.1"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/* ------------------ stuff that modules are allowed to look at ----------- */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Define this to be what your HTML directory content files are called */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define AP_DEFAULT_INDEX "index.html"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** The name of the MIME types file */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define AP_TYPES_CONFIG_FILE "conf/mime.types"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * Define the HTML doctype strings centrally.
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** HTML 2.0 Doctype */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DOCTYPE_HTML_2_0 "<!DOCTYPE HTML PUBLIC \"-//IETF//" \
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek "DTD HTML 2.0//EN\">\n"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** HTML 3.2 Doctype */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DOCTYPE_HTML_3_2 "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek "DTD HTML 3.2 Final//EN\">\n"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** HTML 4.0 Strict Doctype */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define DOCTYPE_HTML_4_0S "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "DTD HTML 4.0//EN\"\n" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering/** HTML 4.0 Transitional Doctype */
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering#define DOCTYPE_HTML_4_0T "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "DTD HTML 4.0 Transitional//EN\"\n" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n"
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering/** HTML 4.0 Frameset Doctype */
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering#define DOCTYPE_HTML_4_0F "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "DTD HTML 4.0 Frameset//EN\"\n" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "\"http://www.w3.org/TR/REC-html40/frameset.dtd\">\n"
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering/** XHTML 1.0 Strict Doctype */
7ca4155737730ece73ae4b4ac80571005cb99b69Jan Engelhardt#define DOCTYPE_XHTML_1_0S "<!DOCTYPE html PUBLIC \"-//W3C//" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "DTD XHTML 1.0 Strict//EN\"\n" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "xhtml1-strict.dtd\">\n"
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering/** XHTML 1.0 Transitional Doctype */
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering#define DOCTYPE_XHTML_1_0T "<!DOCTYPE html PUBLIC \"-//W3C//" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "DTD XHTML 1.0 Transitional//EN\"\n" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "xhtml1-transitional.dtd\">\n"
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering/** XHTML 1.0 Frameset Doctype */
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering#define DOCTYPE_XHTML_1_0F "<!DOCTYPE html PUBLIC \"-//W3C//" \
707b66c66381c899d7ef640e158ffdd5bcff4debLennart Poettering "DTD XHTML 1.0 Frameset//EN\"\n" \
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek "\"http://www.w3.org/TR/xhtml1/DTD/" \
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek "xhtml1-frameset.dtd\">"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Internal representation for a HTTP protocol number, e.g., HTTP/1.1 */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define HTTP_VERSION(major,minor) (1000*(major)+(minor))
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Major part of HTTP protocol */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define HTTP_VERSION_MAJOR(number) ((number)/1000)
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** Minor part of HTTP protocol */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define HTTP_VERSION_MINOR(number) ((number)%1000)
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/* -------------- Port number for server running standalone --------------- */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** default HTTP Port */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek/** default HTTPS Port */
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * Check whether @a port is the default port for the request @a r.
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @param port The port number
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @param r The request
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @see #ap_default_port
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define ap_is_default_port(port,r) ((port) == ap_default_port(r))
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * Get the default port for a request (which depends on the scheme).
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek * @param r The request
0b3b020a178cf3b957fed627de13c895773995ecLennart Poettering#define ap_default_port(r) ap_run_default_port(r)
#ifndef AP_DECLARE
#ifndef AP_DECLARE_NONSTD
#ifndef AP_DECLARE_DATA
# define AP_DECLARE_DATA
#ifndef AP_MODULE_DECLARE
#ifndef AP_MODULE_DECLARE_NONSTD
#ifndef AP_MODULE_DECLARE_DATA
# define AP_MODULE_DECLARE_DATA
#ifndef AP_CORE_DECLARE
#ifndef AP_CORE_DECLARE_NONSTD
} ap_version_t;
* The size of the static status_lines array in http_protocol.c for
#define ap_status_drops_connection(x) \
(((x) == HTTP_BAD_REQUEST) || \
((x) == HTTP_REQUEST_TIME_OUT) || \
((x) == HTTP_LENGTH_REQUIRED) || \
((x) == HTTP_REQUEST_ENTITY_TOO_LARGE) || \
((x) == HTTP_REQUEST_URI_TOO_LARGE) || \
((x) == HTTP_INTERNAL_SERVER_ERROR) || \
((x) == HTTP_SERVICE_UNAVAILABLE) || \
((x) == HTTP_NOT_IMPLEMENTED))
* This list must be tracked by the list in http_protocol.c in routine
struct ap_method_list_t {
#if !APR_CHARSET_EBCDIC
#define REQUEST_NO_BODY 0
#define AP_REQ_ACCEPT_PATH_INFO 0
struct htaccess_result {
const char *dir;
int override;
int override_opts;
/* ### would be nice to not include this from httpd.h ... */
#include "apr_uri.h"
struct process_rec {
const char *short_name;
const char * const *argv;
int argc;
struct request_rec {
* (see http_request.h) */
* protocol.c should ever touch...
char *the_request;
int assbackwards;
/** A proxy request (calculated during post_read_request/translate_name)
int proxyreq;
int header_only;
int proto_num;
char *protocol;
const char *hostname;
const char *status_line;
int status;
/* Request method, two ways; also, protocol, etc.. Outside of protocol.c,
int method_number;
const char *method;
const char *range;
int chunked;
int read_body;
int read_chunked;
unsigned expecting_100;
const char *content_encoding;
char *vlist_validator;
char *user;
char *ap_auth_type;
char *unparsed_uri;
char *uri;
char *filename;
char *canonical_filename;
char *path_info;
char *args;
int used_path_info;
int eos_sent;
const char *log_id;
int no_cache;
int no_local_copy;
char *useragent_ip;
struct conn_rec {
/** used by http_vhost.c */
void *vhost_lookup_data;
char *client_ip;
char *remote_host;
char *remote_logname;
char *local_ip;
char *local_host;
long id;
void *sbh;
unsigned aborted;
int keepalives;
const char *log_id;
#if APR_HAS_THREADS
} conn_state_e;
struct conn_state_t {
struct server_addr_rec {
char *virthost;
struct ap_logconf {
signed char *module_levels;
int level;
struct server_rec {
char *error_fname;
const char *defn_name;
unsigned defn_line_number;
char is_virtual;
const char *server_scheme;
char *server_admin;
char *server_hostname;
int keep_alive_max;
int keep_alive;
const char *path;
int pathlen;
int limit_req_line;
int limit_req_fieldsize;
int limit_req_fields;
void *context;
struct ap_sload_t {
int idle;
int busy;
unsigned long access_count;
struct ap_loadavg_t {
float loadavg;
float loadavg5;
float loadavg15;
const char *document_root);
* Examine a field value (such as a media-/content-type) string and return
char stop);
* Unescape an application/x-www-form-urlencoded string
* Escape a string as application/x-www-form-urlencoded
* Escape a string as application/x-www-form-urlencoded, to a preallocated buffer
const char *prefix)
int cflags);
* a macro, to avoid unistd.h dependency
const char *delim);
const char *timeout_parameter,
const char *default_time_unit);
const char **dest);
const char *name;
* type application/x-www-form-urlencoded.
* 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
#ifndef AP_DEBUG_NO_ALLOC_POISON
#ifdef apr_pcalloc
#ifdef __cplusplus