Apache2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
httpd.h
Go to the documentation of this file.
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements. See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
36 #ifndef APACHE_HTTPD_H
37 #define APACHE_HTTPD_H
38 
39 /* XXX - We need to push more stuff to other .h files, or even .c files, to
40  * make this file smaller
41  */
42 
43 /* Headers in which EVERYONE has an interest... */
44 #include "ap_config.h"
45 #include "ap_mmn.h"
46 
47 #include "ap_release.h"
48 
49 #include "apr.h"
50 #include "apr_general.h"
51 #include "apr_tables.h"
52 #include "apr_pools.h"
53 #include "apr_time.h"
54 #include "apr_network_io.h"
55 #include "apr_buckets.h"
56 #include "apr_poll.h"
57 #include "apr_thread_proc.h"
58 #include "apr_hash.h"
59 
60 #include "os.h"
61 
62 #include "ap_regex.h"
63 
64 #if APR_HAVE_STDLIB_H
65 #include <stdlib.h>
66 #endif
67 
68 /* Note: apr_uri.h is also included, see below */
69 
70 #ifdef __cplusplus
71 extern "C" {
72 #endif
73 
74 /* ----------------------------- config dir ------------------------------ */
75 
79 #ifndef HTTPD_ROOT
80 #ifdef OS2
81 
82 #define HTTPD_ROOT "/os2httpd"
83 #elif defined(WIN32)
84 
85 #define HTTPD_ROOT "/apache"
86 #elif defined (NETWARE)
87 
88 #define HTTPD_ROOT "/apache"
89 #else
90 
91 #define HTTPD_ROOT "/usr/local/apache"
92 #endif
93 #endif /* HTTPD_ROOT */
94 
95 /*
96  * --------- You shouldn't have to edit anything below this line ----------
97  *
98  * Any modifications to any defaults not defined above should be done in the
99  * respective configuration file.
100  *
101  */
102 
107 #ifndef DOCUMENT_LOCATION
108 #ifdef OS2
109 /* Set default for OS/2 file system */
110 #define DOCUMENT_LOCATION HTTPD_ROOT "/docs"
111 #else
112 /* Set default for non OS/2 file system */
113 #define DOCUMENT_LOCATION HTTPD_ROOT "/htdocs"
114 #endif
115 #endif /* DOCUMENT_LOCATION */
116 
118 #ifndef DYNAMIC_MODULE_LIMIT
119 #define DYNAMIC_MODULE_LIMIT 256
120 #endif
121 
123 #define DEFAULT_ADMIN "[no address given]"
124 
126 #ifndef DEFAULT_ERRORLOG
127 #if defined(OS2) || defined(WIN32)
128 #define DEFAULT_ERRORLOG "logs/error.log"
129 #else
130 #define DEFAULT_ERRORLOG "logs/error_log"
131 #endif
132 #endif /* DEFAULT_ERRORLOG */
133 
135 #ifndef DEFAULT_ACCESS_FNAME
136 #ifdef OS2
137 /* Set default for OS/2 file system */
138 #define DEFAULT_ACCESS_FNAME "htaccess"
139 #else
140 #define DEFAULT_ACCESS_FNAME ".htaccess"
141 #endif
142 #endif /* DEFAULT_ACCESS_FNAME */
143 
145 #ifndef SERVER_CONFIG_FILE
146 #define SERVER_CONFIG_FILE "conf/httpd.conf"
147 #endif
148 
150 #ifndef DEFAULT_PATH
151 #define DEFAULT_PATH "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin"
152 #endif
153 
155 #ifndef SUEXEC_BIN
156 #define SUEXEC_BIN HTTPD_ROOT "/bin/suexec"
157 #endif
158 
160 #ifndef DEFAULT_TIMEOUT
161 #define DEFAULT_TIMEOUT 60
162 #endif
163 
165 #ifndef DEFAULT_KEEPALIVE_TIMEOUT
166 #define DEFAULT_KEEPALIVE_TIMEOUT 5
167 #endif
168 
170 #ifndef DEFAULT_KEEPALIVE
171 #define DEFAULT_KEEPALIVE 100
172 #endif
173 
174 /*
175  * Limits on the size of various request items. These limits primarily
176  * exist to prevent simple denial-of-service attacks on a server based
177  * on misuse of the protocol. The recommended values will depend on the
178  * nature of the server resources -- CGI scripts and database backends
179  * might require large values, but most servers could get by with much
180  * smaller limits than we use below. The request message body size can
181  * be limited by the per-dir config directive LimitRequestBody.
182  *
183  * Internal buffer sizes are two bytes more than the DEFAULT_LIMIT_REQUEST_LINE
184  * and DEFAULT_LIMIT_REQUEST_FIELDSIZE below, which explains the 8190.
185  * These two limits can be lowered or raised by the server config
186  * directives LimitRequestLine and LimitRequestFieldsize, respectively.
187  *
188  * DEFAULT_LIMIT_REQUEST_FIELDS can be modified or disabled (set = 0) by
189  * the server config directive LimitRequestFields.
190  */
191 
193 #ifndef DEFAULT_LIMIT_REQUEST_LINE
194 #define DEFAULT_LIMIT_REQUEST_LINE 8190
195 #endif
196 
197 #ifndef DEFAULT_LIMIT_REQUEST_FIELDSIZE
198 #define DEFAULT_LIMIT_REQUEST_FIELDSIZE 8190
199 #endif
200 
201 #ifndef DEFAULT_LIMIT_REQUEST_FIELDS
202 #define DEFAULT_LIMIT_REQUEST_FIELDS 100
203 #endif
204 
205 #ifndef DEFAULT_LIMIT_BLANK_LINES
206 #define DEFAULT_LIMIT_BLANK_LINES 10
207 #endif
208 
213 #define DEFAULT_ADD_DEFAULT_CHARSET_NAME "iso-8859-1"
214 
216 #define AP_SERVER_PROTOCOL "HTTP/1.1"
217 
218 
219 /* ------------------ stuff that modules are allowed to look at ----------- */
220 
222 #ifndef AP_DEFAULT_INDEX
223 #define AP_DEFAULT_INDEX "index.html"
224 #endif
225 
227 #ifndef AP_TYPES_CONFIG_FILE
228 #define AP_TYPES_CONFIG_FILE "conf/mime.types"
229 #endif
230 
231 /*
232  * Define the HTML doctype strings centrally.
233  */
235 #define DOCTYPE_HTML_2_0 "<!DOCTYPE HTML PUBLIC \"-//IETF//" \
236  "DTD HTML 2.0//EN\">\n"
237 
238 #define DOCTYPE_HTML_3_2 "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
239  "DTD HTML 3.2 Final//EN\">\n"
240 
241 #define DOCTYPE_HTML_4_0S "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
242  "DTD HTML 4.0//EN\"\n" \
243  "\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
244 
245 #define DOCTYPE_HTML_4_0T "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
246  "DTD HTML 4.0 Transitional//EN\"\n" \
247  "\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n"
248 
249 #define DOCTYPE_HTML_4_0F "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
250  "DTD HTML 4.0 Frameset//EN\"\n" \
251  "\"http://www.w3.org/TR/REC-html40/frameset.dtd\">\n"
252 
253 #define DOCTYPE_HTML_4_01 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n"
254 
255 #define DOCTYPE_HTML_5 "<!DOCTYPE html>\n"
256 
257 #define DOCTYPE_XHTML_1_0S "<!DOCTYPE html PUBLIC \"-//W3C//" \
258  "DTD XHTML 1.0 Strict//EN\"\n" \
259  "\"http://www.w3.org/TR/xhtml1/DTD/" \
260  "xhtml1-strict.dtd\">\n"
261 
262 #define DOCTYPE_XHTML_1_0T "<!DOCTYPE html PUBLIC \"-//W3C//" \
263  "DTD XHTML 1.0 Transitional//EN\"\n" \
264  "\"http://www.w3.org/TR/xhtml1/DTD/" \
265  "xhtml1-transitional.dtd\">\n"
266 
267 #define DOCTYPE_XHTML_1_0F "<!DOCTYPE html PUBLIC \"-//W3C//" \
268  "DTD XHTML 1.0 Frameset//EN\"\n" \
269  "\"http://www.w3.org/TR/xhtml1/DTD/" \
270  "xhtml1-frameset.dtd\">"
271 
273 #define HTTP_VERSION(major,minor) (1000*(major)+(minor))
274 
275 #define HTTP_VERSION_MAJOR(number) ((number)/1000)
276 
277 #define HTTP_VERSION_MINOR(number) ((number)%1000)
278 
279 /* -------------- Port number for server running standalone --------------- */
280 
282 #define DEFAULT_HTTP_PORT 80
283 
284 #define DEFAULT_HTTPS_PORT 443
285 
291 #define ap_is_default_port(port,r) ((port) == ap_default_port(r))
292 
296 #define ap_default_port(r) ap_run_default_port(r)
297 
301 #define ap_http_scheme(r) ap_run_http_scheme(r)
302 
304 #define MAX_STRING_LEN HUGE_STRING_LEN
305 
307 #define HUGE_STRING_LEN 8192
308 
310 #define AP_IOBUFSIZE 8192
311 
313 #define AP_MAX_REG_MATCH 10
314 
321 #define AP_MAX_SENDFILE 16777216 /* 2^24 */
322 
329 #define APEXIT_OK 0x0
330 
331 #define APEXIT_INIT 0x2
332 
333 #define APEXIT_CHILDINIT 0x3
334 
339 #define APEXIT_CHILDSICK 0x7
340 
345 #define APEXIT_CHILDFATAL 0xf
346 
347 #ifndef AP_DECLARE
348 
353 # define AP_DECLARE(type) type
354 #endif
355 
356 #ifndef AP_DECLARE_NONSTD
357 
364 # define AP_DECLARE_NONSTD(type) type
365 #endif
366 #ifndef AP_DECLARE_DATA
367 # define AP_DECLARE_DATA
368 #endif
369 
370 #ifndef AP_MODULE_DECLARE
371 # define AP_MODULE_DECLARE(type) type
372 #endif
373 #ifndef AP_MODULE_DECLARE_NONSTD
374 # define AP_MODULE_DECLARE_NONSTD(type) type
375 #endif
376 #ifndef AP_MODULE_DECLARE_DATA
377 # define AP_MODULE_DECLARE_DATA
378 #endif
379 
384 #ifndef AP_CORE_DECLARE
385 # define AP_CORE_DECLARE AP_DECLARE
386 #endif
387 
393 #ifndef AP_CORE_DECLARE_NONSTD
394 # define AP_CORE_DECLARE_NONSTD AP_DECLARE_NONSTD
395 #endif
396 
401 #define AP_START_USERERR (APR_OS_START_USERERR + 2000)
402 #define AP_USERERR_LEN 1000
403 
405 #define AP_DECLINED (AP_START_USERERR + 0)
406 
413 typedef struct {
414  int major;
415  int minor;
416  int patch;
417  const char *add_string;
418 } ap_version_t;
419 
427 
434 AP_DECLARE(const char *) ap_get_server_banner(void);
435 
443 AP_DECLARE(const char *) ap_get_server_description(void);
444 
450 AP_DECLARE(void) ap_add_version_component(apr_pool_t *pconf, const char *component);
451 
456 AP_DECLARE(const char *) ap_get_server_built(void);
457 
458 /* non-HTTP status codes returned by hooks */
459 
460 #define OK 0
461 #define DECLINED -1
462 #define DONE -2
465 #define SUSPENDED -3
470 #define AP_NOBODY_WROTE -100
471 
473 #define AP_NOBODY_READ -101
474 
477 #define AP_FILTER_ERROR -102
478 
489 #define RESPONSE_CODES 103
490 
491 #define HTTP_CONTINUE 100
492 #define HTTP_SWITCHING_PROTOCOLS 101
493 #define HTTP_PROCESSING 102
494 #define HTTP_OK 200
495 #define HTTP_CREATED 201
496 #define HTTP_ACCEPTED 202
497 #define HTTP_NON_AUTHORITATIVE 203
498 #define HTTP_NO_CONTENT 204
499 #define HTTP_RESET_CONTENT 205
500 #define HTTP_PARTIAL_CONTENT 206
501 #define HTTP_MULTI_STATUS 207
502 #define HTTP_ALREADY_REPORTED 208
503 #define HTTP_IM_USED 226
504 #define HTTP_MULTIPLE_CHOICES 300
505 #define HTTP_MOVED_PERMANENTLY 301
506 #define HTTP_MOVED_TEMPORARILY 302
507 #define HTTP_SEE_OTHER 303
508 #define HTTP_NOT_MODIFIED 304
509 #define HTTP_USE_PROXY 305
510 #define HTTP_TEMPORARY_REDIRECT 307
511 #define HTTP_PERMANENT_REDIRECT 308
512 #define HTTP_BAD_REQUEST 400
513 #define HTTP_UNAUTHORIZED 401
514 #define HTTP_PAYMENT_REQUIRED 402
515 #define HTTP_FORBIDDEN 403
516 #define HTTP_NOT_FOUND 404
517 #define HTTP_METHOD_NOT_ALLOWED 405
518 #define HTTP_NOT_ACCEPTABLE 406
519 #define HTTP_PROXY_AUTHENTICATION_REQUIRED 407
520 #define HTTP_REQUEST_TIME_OUT 408
521 #define HTTP_CONFLICT 409
522 #define HTTP_GONE 410
523 #define HTTP_LENGTH_REQUIRED 411
524 #define HTTP_PRECONDITION_FAILED 412
525 #define HTTP_REQUEST_ENTITY_TOO_LARGE 413
526 #define HTTP_REQUEST_URI_TOO_LARGE 414
527 #define HTTP_UNSUPPORTED_MEDIA_TYPE 415
528 #define HTTP_RANGE_NOT_SATISFIABLE 416
529 #define HTTP_EXPECTATION_FAILED 417
530 #define HTTP_IM_A_TEAPOT 418
531 #define HTTP_MISDIRECTED_REQUEST 421
532 #define HTTP_UNPROCESSABLE_ENTITY 422
533 #define HTTP_LOCKED 423
534 #define HTTP_FAILED_DEPENDENCY 424
535 #define HTTP_TOO_EARLY 425
536 #define HTTP_UPGRADE_REQUIRED 426
537 #define HTTP_PRECONDITION_REQUIRED 428
538 #define HTTP_TOO_MANY_REQUESTS 429
539 #define HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE 431
540 #define HTTP_UNAVAILABLE_FOR_LEGAL_REASONS 451
541 #define HTTP_INTERNAL_SERVER_ERROR 500
542 #define HTTP_NOT_IMPLEMENTED 501
543 #define HTTP_BAD_GATEWAY 502
544 #define HTTP_SERVICE_UNAVAILABLE 503
545 #define HTTP_GATEWAY_TIME_OUT 504
546 #define HTTP_VERSION_NOT_SUPPORTED 505
547 #define HTTP_VARIANT_ALSO_VARIES 506
548 #define HTTP_INSUFFICIENT_STORAGE 507
549 #define HTTP_LOOP_DETECTED 508
550 #define HTTP_NOT_EXTENDED 510
551 #define HTTP_NETWORK_AUTHENTICATION_REQUIRED 511
554 #define ap_is_HTTP_INFO(x) (((x) >= 100)&&((x) < 200))
555 
556 #define ap_is_HTTP_SUCCESS(x) (((x) >= 200)&&((x) < 300))
558 #define ap_is_HTTP_REDIRECT(x) (((x) >= 300)&&((x) < 400))
560 #define ap_is_HTTP_ERROR(x) (((x) >= 400)&&((x) < 600))
562 #define ap_is_HTTP_CLIENT_ERROR(x) (((x) >= 400)&&((x) < 500))
564 #define ap_is_HTTP_SERVER_ERROR(x) (((x) >= 500)&&((x) < 600))
566 #define ap_is_HTTP_VALID_RESPONSE(x) (((x) >= 100)&&((x) < 600))
569 #define ap_status_drops_connection(x) \
570  (((x) == HTTP_BAD_REQUEST) || \
571  ((x) == HTTP_REQUEST_TIME_OUT) || \
572  ((x) == HTTP_LENGTH_REQUIRED) || \
573  ((x) == HTTP_REQUEST_ENTITY_TOO_LARGE) || \
574  ((x) == HTTP_REQUEST_URI_TOO_LARGE) || \
575  ((x) == HTTP_INTERNAL_SERVER_ERROR) || \
576  ((x) == HTTP_SERVICE_UNAVAILABLE) || \
577  ((x) == HTTP_NOT_IMPLEMENTED))
578 
580 #define AP_STATUS_IS_HEADER_ONLY(x) ((x) == HTTP_NO_CONTENT || \
581  (x) == HTTP_NOT_MODIFIED)
582 
598 #define M_GET 0
599 #define M_PUT 1 /* : */
600 #define M_POST 2
601 #define M_DELETE 3
602 #define M_CONNECT 4
603 #define M_OPTIONS 5
604 #define M_TRACE 6
605 #define M_PATCH 7
606 #define M_PROPFIND 8
607 #define M_PROPPATCH 9 /* : */
608 #define M_MKCOL 10
609 #define M_COPY 11
610 #define M_MOVE 12
611 #define M_LOCK 13
612 #define M_UNLOCK 14
613 #define M_VERSION_CONTROL 15
614 #define M_CHECKOUT 16 /* : */
615 #define M_UNCHECKOUT 17
616 #define M_CHECKIN 18
617 #define M_UPDATE 19
618 #define M_LABEL 20
619 #define M_REPORT 21
620 #define M_MKWORKSPACE 22
621 #define M_MKACTIVITY 23
622 #define M_BASELINE_CONTROL 24
623 #define M_MERGE 25
624 /* Additional methods must be registered by the implementor, we have only
625  * room for 64 bit-wise methods available, so do not squander them (more of
626  * the above methods should probably move here)
627  */
628 /* #define M_BREW nn */
629 /* #define M_WHEN nn */
630 #define M_INVALID 26
638 #define METHODS 64
639 
643 #define AP_METHOD_BIT ((apr_int64_t)1)
644 
648 typedef struct ap_method_list_t ap_method_list_t;
649 
657 struct ap_method_list_t {
662 };
663 
669 #define CGI_MAGIC_TYPE "application/x-httpd-cgi"
670 
671 #define INCLUDES_MAGIC_TYPE "text/x-server-parsed-html"
673 #define INCLUDES_MAGIC_TYPE3 "text/x-server-parsed-html3"
675 #define DIR_MAGIC_TYPE "httpd/unix-directory"
677 #define AP_DEFAULT_HANDLER_NAME ""
678 #define AP_IS_DEFAULT_HANDLER_NAME(x) (*x == '\0')
679 
681 /* Just in case your linefeed isn't the one the other end is expecting. */
682 #if !APR_CHARSET_EBCDIC
683 
684 #define LF 10
685 
686 #define CR 13
688 #define CRLF "\015\012"
689 #else /* APR_CHARSET_EBCDIC */
690 /* For platforms using the EBCDIC charset, the transition ASCII->EBCDIC is done
691  * in the buff package (bread/bputs/bwrite). Everywhere else, we use
692  * "native EBCDIC" CR and NL characters. These are therefore
693  * defined as
694  * '\r' and '\n'.
695  */
696 #define CR '\r'
697 #define LF '\n'
698 #define CRLF "\r\n"
699 #endif /* APR_CHARSET_EBCDIC */
700 
701 #define CRLF_ASCII "\015\012"
702 #define ZERO_ASCII "\060"
703 
711 #define REQUEST_NO_BODY 0
712 
713 #define REQUEST_CHUNKED_ERROR 1
715 #define REQUEST_CHUNKED_DECHUNK 2
726 #define AP_REQ_ACCEPT_PATH_INFO 0
727 
728 #define AP_REQ_REJECT_PATH_INFO 1
730 #define AP_REQ_DEFAULT_PATH_INFO 2
735 /*
736  * Things which may vary per file-lookup WITHIN a request ---
737  * e.g., state of MIME config. Basically, the name of an object, info
738  * about the object, and any other info we may have which may need to
739  * change as we go poking around looking for it (e.g., overridden by
740  * .htaccess files).
741  *
742  * Note how the default state of almost all these things is properly
743  * zero, so that allocating it with pcalloc does the right thing without
744  * a whole lot of hairy initialization... so long as we are willing to
745  * make the (fairly) portable assumption that the bit pattern of a NULL
746  * pointer is, in fact, zero.
747  */
748 
753 struct htaccess_result {
755  const char *dir;
757  int override;
759  int override_opts;
763  struct ap_conf_vector_t *htaccess;
765  const struct htaccess_result *next;
766 };
767 
768 /* The following four types define a hierarchy of activities, so that
769  * given a request_rec r you can write r->connection->server->process
770  * to get to the process_rec. While this reduces substantially the
771  * number of arguments that various hooks require beware that in
772  * threaded versions of the server you must consider multiplexing
773  * issues. */
774 
775 
777 typedef struct process_rec process_rec;
779 typedef struct server_rec server_rec;
781 typedef struct conn_rec conn_rec;
783 typedef struct conn_slave_rec conn_slave_rec;
785 typedef struct request_rec request_rec;
787 typedef struct conn_state_t conn_state_t;
789 /* ### would be nice to not include this from httpd.h ... */
790 /* This comes after we have defined the request_rec type */
791 #include "apr_uri.h"
792 
796 struct process_rec {
798  apr_pool_t *pool;
800  apr_pool_t *pconf;
802  const char *short_name;
804  const char * const *argv;
806  int argc;
807 };
808 
812 struct request_rec {
814  apr_pool_t *pool;
823  request_rec *prev;
827  request_rec *main;
828 
829  /* Info about the request itself... we begin with stuff that only
830  * protocol.c should ever touch...
831  */
833  char *the_request;
835  int assbackwards;
840  int proxyreq;
842  int header_only;
844  int proto_num;
846  const char *protocol;
850  const char *hostname;
851 
854 
856  const char *status_line;
858  int status;
860  /* Request method, two ways; also, protocol, etc.. Outside of protocol.c,
861  * look, but don't touch.
862  */
863 
865  int method_number;
867  const char *method;
902  /* HTTP/1.1 connection-level features */
905  const char *range;
909  int chunked;
914  int read_body;
916  int read_chunked;
918  unsigned expecting_100;
922  /* XXX: ap_body_to_table has been removed. Remove body_table too or
923  * XXX: keep it to reintroduce ap_body_to_table without major bump? */
930  /* MIME header environments, in and out. Also, an array containing
931  * environment variables to be passed to subprocesses, so people can
932  * write modules to add to that environment.
933  *
934  * The difference between headers_out and err_headers_out is that the
935  * latter are printed even on error, and persist across internal redirects
936  * (so the headers printed for ErrorDocument handlers will have them).
937  *
938  * The 'notes' apr_table_t is for notes from one module to another, with no
939  * other set purpose in mind...
940  */
941 
954  /* content_type, handler, content_encoding, and all content_languages
955  * MUST be lowercased strings. They may be pointers to static strings;
956  * they should not be modified in place.
957  */
959  const char *content_type; /* Break these out --- we dispatch on 'em */
961  const char *handler; /* What we *really* dispatch on */
964  const char *content_encoding;
970 
972  char *user;
974  char *ap_auth_type;
976  /* What object is being requested (either directly, or via include
977  * or content-negotiation mapping).
978  */
979 
981  char *unparsed_uri;
983  char *uri;
985  char *filename;
989  char *canonical_filename;
991  char *path_info;
993  char *args;
1003  int used_path_info;
1004 
1007 
1008  /* Various other config info which may change with .htaccess files
1009  * These are config vectors, with one void* pointer for each module
1010  * (the thing pointed to being the module's business).
1011  */
1012 
1021  const struct ap_logconf *log;
1022 
1026  const char *log_id;
1027 
1034  const struct htaccess_result *htaccess;
1035 
1039  struct ap_filter_t *input_filters;
1047 
1051  int no_local_copy;
1056 #if APR_HAS_THREADS
1058 #endif
1059 
1070  char *useragent_ip;
1071 
1080  char *useragent_host;
1085  int double_reverse;
1090  int taint;
1091 };
1092 
1103 #define PROXYREQ_NONE 0
1104 #define PROXYREQ_PROXY 1
1105 #define PROXYREQ_REVERSE 2
1106 #define PROXYREQ_RESPONSE 3
1108 /* @} */
1113 typedef enum {
1115  AP_CONN_CLOSE,
1119 /* For struct ap_filter and ap_filter_conn_ctx */
1120 #include "util_filter.h"
1121 
1125 struct conn_rec {
1127  apr_pool_t *pool;
1131  void *vhost_lookup_data;
1133  /* Information about the connection itself */
1140 
1144  char *client_ip;
1148  char *remote_host;
1151  /* TODO: Remove from request_rec, make local to mod_ident */
1152  char *remote_logname;
1153 
1155  char *local_ip;
1158  char *local_host;
1159 
1161  long id;
1169  struct ap_filter_t *input_filters;
1171  struct ap_filter_t *output_filters;
1173  void *sbh;
1177  conn_state_t *cs;
1182  unsigned int clogging_input_filters:1;
1183 
1186  signed int double_reverse:2;
1187 
1189  unsigned aborted;
1190 
1194 
1197 
1200  const struct ap_logconf *log;
1201 
1205  const char *log_id;
1206 
1207 
1213 #if APR_HAS_THREADS
1215 #endif
1216 
1219 
1222 
1224  void *ctx;
1225 
1228 
1231 
1233  struct ap_filter_conn_ctx *filter_conn_ctx;
1234 
1237 };
1238 
1240  conn_rec *c;
1241 };
1248 typedef enum {
1254  CONN_STATE_LINGER, /* connection may be closed with lingering */
1255  CONN_STATE_LINGER_NORMAL, /* MPM has started lingering close with normal timeout */
1256  CONN_STATE_LINGER_SHORT, /* MPM has started lingering close with short timeout */
1258  CONN_STATE_NUM /* Number of states (keep/kept last) */
1260 
1261 typedef enum {
1263  CONN_SENSE_WANT_READ, /* next event must be read */
1264  CONN_SENSE_WANT_WRITE /* next event must be write */
1270 struct conn_state_t {
1275 };
1276 
1277 /* Per-vhost config... */
1278 
1283 #define DEFAULT_VHOST_ADDR 0xfffffffful
1284 
1285 
1290 typedef struct server_addr_rec server_addr_rec;
1291 struct server_addr_rec {
1295  char *virthost;
1300 };
1301 
1302 struct ap_logconf {
1304  signed char *module_levels;
1307  int level;
1308 };
1312 struct server_rec {
1316  server_rec *next;
1318  /* Log files --- note that transfer log is now in the modules... */
1321  char *error_fname;
1325  struct ap_logconf log;
1331  /* Module-specific configuration for server, and defaults... */
1340  const char *defn_name;
1342  unsigned defn_line_number;
1344  char is_virtual;
1346 
1347  /* Information for redirects */
1348 
1350  apr_port_t port;
1352  const char *server_scheme;
1354  /* Contact information */
1357  char *server_admin;
1359  char *server_hostname;
1361  /* Transaction handling */
1370  int keep_alive_max;
1372  int keep_alive;
1380  const char *path;
1382  int pathlen;
1387  int limit_req_fieldsize;
1389  int limit_req_fields;
1392  void *context;
1393 
1397  unsigned int keep_alive_timeout_set:1;
1398 };
1399 
1404 typedef struct ap_sload_t ap_sload_t;
1405 struct ap_sload_t {
1406  /* percentage of process/threads ready/idle (0->100)*/
1407  int idle;
1408  /* percentage of process/threads busy (0->100) */
1409  int busy;
1410  /* total bytes served */
1412  /* total access count */
1413  unsigned long access_count;
1414 };
1415 
1420 typedef struct ap_loadavg_t ap_loadavg_t;
1421 struct ap_loadavg_t {
1422  /* current loadavg, ala getloadavg() */
1423  float loadavg;
1424  /* 5 min loadavg */
1425  float loadavg5;
1426  /* 15 min loadavg */
1427  float loadavg15;
1428 };
1429 
1440 
1446 AP_DECLARE(const char *) ap_context_prefix(request_rec *r);
1447 
1456 AP_DECLARE(void) ap_set_context_info(request_rec *r, const char *prefix,
1457  const char *document_root);
1458 
1464 AP_DECLARE(void) ap_set_document_root(request_rec *r, const char *document_root);
1465 
1473 AP_DECLARE(char *) ap_field_noparam(apr_pool_t *p, const char *intype);
1474 
1483 AP_DECLARE(char *) ap_ht_time(apr_pool_t *p, apr_time_t t, const char *fmt, int gmt);
1484 
1485 /* String handling. The *_nc variants allow you to use non-const char **s as
1486  arguments (unfortunately C won't automatically convert a char ** to a const
1487  char **) */
1488 
1496 AP_DECLARE(char *) ap_getword(apr_pool_t *p, const char **line, char stop);
1497 
1506 AP_DECLARE(char *) ap_getword_nc(apr_pool_t *p, char **line, char stop);
1507 
1515 AP_DECLARE(char *) ap_getword_white(apr_pool_t *p, const char **line);
1516 
1525 AP_DECLARE(char *) ap_getword_white_nc(apr_pool_t *p, char **line);
1526 
1535 AP_DECLARE(char *) ap_getword_nulls(apr_pool_t *p, const char **line,
1536  char stop);
1537 
1547 AP_DECLARE(char *) ap_getword_nulls_nc(apr_pool_t *p, char **line, char stop);
1548 
1555 AP_DECLARE(char *) ap_getword_conf(apr_pool_t *p, const char **line);
1556 
1564 AP_DECLARE(char *) ap_getword_conf_nc(apr_pool_t *p, char **line);
1565 
1573 AP_DECLARE(char *) ap_getword_conf2(apr_pool_t *p, const char **line);
1574 
1583 AP_DECLARE(char *) ap_getword_conf2_nc(apr_pool_t *p, char **line);
1584 
1595 AP_DECLARE(const char *) ap_resolve_env(apr_pool_t *p, const char * word);
1596 
1606 AP_DECLARE(const char *) ap_size_list_item(const char **field, int *len);
1607 
1618 AP_DECLARE(char *) ap_get_list_item(apr_pool_t *p, const char **field);
1619 
1628 AP_DECLARE(int) ap_find_list_item(apr_pool_t *p, const char *line, const char *tok);
1629 
1637 AP_DECLARE(int) ap_find_etag_weak(apr_pool_t *p, const char *line, const char *tok);
1638 
1646 AP_DECLARE(int) ap_find_etag_strong(apr_pool_t *p, const char *line, const char *tok);
1647 
1648 /* Scan a string for field content chars, as defined by RFC7230 section 3.2
1649  * including VCHAR/obs-text, as well as HT and SP
1650  * @param ptr The string to scan
1651  * @return A pointer to the first (non-HT) ASCII ctrl character.
1652  * @note lws and trailing whitespace are scanned, the caller is responsible
1653  * for trimming leading and trailing whitespace
1654  */
1655 AP_DECLARE(const char *) ap_scan_http_field_content(const char *ptr);
1656 
1657 /* Scan a string for token characters, as defined by RFC7230 section 3.2.6
1658  * @param ptr The string to scan
1659  * @return A pointer to the first non-token character.
1660  */
1661 AP_DECLARE(const char *) ap_scan_http_token(const char *ptr);
1662 
1663 /* Scan a string for visible ASCII (0x21-0x7E) or obstext (0x80+)
1664  * and return a pointer to the first SP/CTL/NUL character encountered.
1665  * @param ptr The string to scan
1666  * @return A pointer to the first SP/CTL character.
1667  */
1668 AP_DECLARE(const char *) ap_scan_vchar_obstext(const char *ptr);
1669 
1683 AP_DECLARE(const char *) ap_parse_token_list_strict(apr_pool_t *p, const char *tok,
1684  apr_array_header_t **tokens,
1685  int skip_invalid);
1686 
1697 AP_DECLARE(char *) ap_get_token(apr_pool_t *p, const char **accept_line, int accept_white);
1698 
1706 AP_DECLARE(int) ap_find_token(apr_pool_t *p, const char *line, const char *tok);
1707 
1715 AP_DECLARE(int) ap_find_last_token(apr_pool_t *p, const char *line, const char *tok);
1716 
1722 AP_DECLARE(int) ap_is_url(const char *u);
1723 
1729 AP_DECLARE(int) ap_unescape_all(char *url);
1730 
1737 AP_DECLARE(int) ap_unescape_url(char *url);
1738 
1746 AP_DECLARE(int) ap_unescape_url_keep2f(char *url, int decode_slashes);
1747 
1754 AP_DECLARE(int) ap_unescape_urlencoded(char *query);
1755 
1761 AP_DECLARE(void) ap_no2slash(char *name)
1770 AP_DECLARE(void) ap_no2slash_ex(char *name, int is_fs_path)
1771  AP_FN_ATTR_NONNULL_ALL;
1772 
1773 
1779 AP_DECLARE(void) ap_getparents(char *name)
1780  AP_FN_ATTR_NONNULL_ALL;
1781 
1789 AP_DECLARE(char *) ap_escape_path_segment(apr_pool_t *p, const char *s)
1790  AP_FN_ATTR_NONNULL_ALL;
1791 
1799 AP_DECLARE(char *) ap_escape_path_segment_buffer(char *c, const char *s)
1800  AP_FN_ATTR_NONNULL_ALL;
1801 
1812 AP_DECLARE(char *) ap_os_escape_path(apr_pool_t *p, const char *path, int partial)
1813  AP_FN_ATTR_NONNULL_ALL;
1814 
1816 #define ap_escape_uri(ppool,path) ap_os_escape_path(ppool,path,1)
1817 
1825 AP_DECLARE(char *) ap_escape_urlencoded(apr_pool_t *p, const char *s)
1826  AP_FN_ATTR_NONNULL_ALL;
1827 
1835 AP_DECLARE(char *) ap_escape_urlencoded_buffer(char *c, const char *s)
1836  AP_FN_ATTR_NONNULL_ALL;
1837 
1845 #define ap_escape_html(p,s) ap_escape_html2(p,s,0)
1846 
1854 AP_DECLARE(char *) ap_escape_html2(apr_pool_t *p, const char *s, int toasc)
1855  AP_FN_ATTR_NONNULL_ALL;
1856 
1864 AP_DECLARE(char *) ap_escape_logitem(apr_pool_t *p, const char *str)
1865  AP_FN_ATTR_NONNULL((1));
1866 
1875 AP_DECLARE(apr_size_t) ap_escape_errorlog_item(char *dest, const char *source,
1876  apr_size_t buflen)
1877  AP_FN_ATTR_NONNULL((1));
1878 
1887 AP_DECLARE(char *) ap_construct_server(apr_pool_t *p, const char *hostname,
1888  apr_port_t port, const request_rec *r)
1889  AP_FN_ATTR_NONNULL((1,4));
1890 
1898 AP_DECLARE(char *) ap_escape_shell_cmd(apr_pool_t *p, const char *s)
1899  AP_FN_ATTR_NONNULL_ALL;
1900 
1906 AP_DECLARE(int) ap_count_dirs(const char *path)
1907  AP_FN_ATTR_NONNULL_ALL;
1908 
1920 AP_DECLARE(char *) ap_make_dirstr_prefix(char *d, const char *s, int n)
1921  AP_FN_ATTR_NONNULL_ALL;
1922 
1930 AP_DECLARE(char *) ap_make_dirstr_parent(apr_pool_t *p, const char *s)
1931  AP_FN_ATTR_NONNULL_ALL;
1932 
1946 AP_DECLARE(char *) ap_make_full_path(apr_pool_t *a, const char *dir, const char *f)
1947  AP_FN_ATTR_NONNULL_ALL;
1948 
1957 AP_DECLARE(int) ap_os_is_path_absolute(apr_pool_t *p, const char *dir)
1958  AP_FN_ATTR_NONNULL_ALL;
1959 
1967 AP_DECLARE(int) ap_is_matchexp(const char *str)
1968  AP_FN_ATTR_NONNULL_ALL;
1969 
1976 AP_DECLARE(int) ap_strcmp_match(const char *str, const char *expected)
1977  AP_FN_ATTR_NONNULL_ALL;
1978 
1986 AP_DECLARE(int) ap_strcasecmp_match(const char *str, const char *expected)
1987  AP_FN_ATTR_NONNULL_ALL;
1988 
1996 AP_DECLARE(char *) ap_strcasestr(const char *s1, const char *s2)
1997  AP_FN_ATTR_NONNULL_ALL;
1998 
2005 AP_DECLARE(const char *) ap_stripprefix(const char *bigstring,
2006  const char *prefix)
2007  AP_FN_ATTR_NONNULL_ALL;
2008 
2016 AP_DECLARE(char *) ap_pbase64decode(apr_pool_t *p, const char *bufcoded);
2017 
2036  const char *encoded,
2037  char **decoded,
2038  apr_size_t *len);
2039 
2047 AP_DECLARE(char *) ap_pbase64encode(apr_pool_t *p, char *string);
2048 
2062 AP_DECLARE(ap_regex_t *) ap_pregcomp(apr_pool_t *p, const char *pattern,
2063  int cflags);
2064 
2073 
2087 AP_DECLARE(char *) ap_pregsub(apr_pool_t *p, const char *input,
2088  const char *source, apr_size_t nmatch,
2089  ap_regmatch_t pmatch[]);
2090 
2105 AP_DECLARE(apr_status_t) ap_pregsub_ex(apr_pool_t *p, char **result,
2106  const char *input, const char *source,
2107  apr_size_t nmatch,
2108  ap_regmatch_t pmatch[],
2109  apr_size_t maxlen);
2110 
2116 AP_DECLARE(void) ap_content_type_tolower(char *s);
2117 
2122 AP_DECLARE(void) ap_str_tolower(char *s);
2123 
2128 AP_DECLARE(void) ap_str_toupper(char *s);
2129 
2137 AP_DECLARE(int) ap_ind(const char *str, char c); /* Sigh... */
2138 
2146 AP_DECLARE(int) ap_rind(const char *str, char c);
2147 
2155 AP_DECLARE(char *) ap_escape_quotes(apr_pool_t *p, const char *instring);
2156 
2167 AP_DECLARE(char *) ap_append_pid(apr_pool_t *p, const char *string,
2168  const char *delim);
2169 
2189  const char *timeout_parameter,
2190  apr_interval_time_t *timeout,
2191  const char *default_time_unit);
2192 
2200 
2202 #define AP_TAINT_HTACCESS 0x1
2203 
2211 
2223  const char **dest);
2224 
2234 AP_DECLARE(apr_status_t) ap_str2_alnum(const char *src, char *dest);
2235 
2244 typedef struct {
2245  const char *name;
2246  apr_bucket_brigade *value;
2260  apr_array_header_t **ptr,
2261  apr_size_t num, apr_size_t size);
2262 
2263 /* Misc system hackery */
2270 AP_DECLARE(int) ap_is_rdirectory(apr_pool_t *p, const char *name);
2271 
2278 AP_DECLARE(int) ap_is_directory(apr_pool_t *p, const char *name);
2279 
2280 #ifdef _OSD_POSIX
2281 extern int os_init_job_environment(server_rec *s, const char *user_name, int one_process);
2282 #endif /* _OSD_POSIX */
2283 
2289 char *ap_get_local_host(apr_pool_t *p);
2290 
2297 AP_DECLARE(void) ap_log_assert(const char *szExp, const char *szFile, int nLine)
2298  __attribute__((noreturn));
2299 
2303 #define ap_assert(exp) ((exp) ? (void)0 : ap_log_assert(#exp,__FILE__,__LINE__))
2304 
2312 #ifdef AP_DEBUG
2313 #define AP_DEBUG_ASSERT(exp) ap_assert(exp)
2314 #else
2315 #define AP_DEBUG_ASSERT(exp) ((void)0)
2316 #endif
2317 
2327 #define SIGSTOP_DETACH 1
2328 
2329 #define SIGSTOP_MAKE_CHILD 2
2331 #define SIGSTOP_SPAWN_CHILD 4
2333 #define SIGSTOP_PIPED_LOG_SPAWN 8
2335 #define SIGSTOP_CGI_CHILD 16
2338 #ifdef DEBUG_SIGSTOP
2339 extern int raise_sigstop_flags;
2340 #define RAISE_SIGSTOP(x) do { \
2341  if (raise_sigstop_flags & SIGSTOP_##x) raise(SIGSTOP);\
2342  } while (0)
2343 #else
2344 #define RAISE_SIGSTOP(x)
2345 #endif
2346 
2353 AP_DECLARE(const char *) ap_psignature(const char *prefix, request_rec *r);
2354 
2355  /* The C library has functions that allow const to be silently dropped ...
2356  these macros detect the drop in maintainer mode, but use the native
2357  methods for normal builds
2358 
2359  Note that on some platforms (e.g., AIX with gcc, Solaris with gcc), string.h needs
2360  to be included before the macros are defined or compilation will fail.
2361  */
2362 #include <string.h>
2363 
2364 AP_DECLARE(char *) ap_strchr(char *s, int c);
2365 AP_DECLARE(const char *) ap_strchr_c(const char *s, int c);
2366 AP_DECLARE(char *) ap_strrchr(char *s, int c);
2367 AP_DECLARE(const char *) ap_strrchr_c(const char *s, int c);
2368 AP_DECLARE(char *) ap_strstr(char *s, const char *c);
2369 AP_DECLARE(const char *) ap_strstr_c(const char *s, const char *c);
2372 
2373 #ifdef AP_DEBUG
2374 
2375 #undef strchr
2376 # define strchr(s, c) ap_strchr(s,c)
2377 #undef strrchr
2378 # define strrchr(s, c) ap_strrchr(s,c)
2379 #undef strstr
2380 # define strstr(s, c) ap_strstr(s,c)
2381 
2382 #if !defined(AP_DEBUG_NO_ALLOC_POISON) && !APR_POOL_DEBUG
2383 /*
2384  * ap_palloc_debug initializes allocated memory to non-zero
2385  */
2386 #define apr_palloc ap_palloc_debug
2387 /*
2388  * this is necessary to avoid useless double memset of memory
2389  * with ap_palloc_debug
2390  */
2391 #ifdef apr_pcalloc
2392 #undef apr_pcalloc
2393 #endif
2394 #define apr_pcalloc ap_pcalloc_debug
2395 #endif
2396 
2397 #else
2398 
2400 # define ap_strchr(s, c) strchr(s, c)
2401 
2402 # define ap_strchr_c(s, c) strchr(s, c)
2404 # define ap_strrchr(s, c) strrchr(s, c)
2406 # define ap_strrchr_c(s, c) strrchr(s, c)
2408 # define ap_strstr(s, c) strstr(s, c)
2410 # define ap_strstr_c(s, c) strstr(s, c)
2412 #endif
2423 AP_DECLARE(void) ap_random_insecure_bytes(void *buf, apr_size_t size);
2424 
2432 
2436 AP_DECLARE(void) ap_abort_on_oom(void) __attribute__((noreturn));
2437 
2444 AP_DECLARE(void *) ap_malloc(size_t size)
2447 
2455 AP_DECLARE(void *) ap_calloc(size_t nelem, size_t size)
2458 
2466 AP_DECLARE(void *) ap_realloc(void *ptr, size_t size)
2468  AP_FN_ATTR_ALLOC_SIZE(2);
2469 
2475  AP_FN_ATTR_NONNULL_ALL;
2476 
2482  AP_FN_ATTR_NONNULL_ALL;
2483 
2492 AP_DECLARE(void) ap_bin2hex(const void *src, apr_size_t srclen, char *dest)
2493  AP_FN_ATTR_NONNULL_ALL;
2494 
2508  const char *username,
2509  const char *passwd,
2510  const char *hash);
2511 
2521  const char *cmd,
2522  const char * const *argv);
2523 
2524 
2525 #define AP_NORESTART APR_OS_START_USEERR + 1
2526 
2537  const char *s,
2538  int start);
2539 
2547  const char *s);
2548 
2561 AP_DECLARE(int) ap_cstr_casecmp(const char *s1, const char *s2);
2562 
2575 AP_DECLARE(int) ap_cstr_casecmpn(const char *s1, const char *s2, apr_size_t n);
2576 
2580 #define AP_DIR_FLAG_NONE 0
2581 
2586 #define AP_DIR_FLAG_OPTIONAL 1
2587 
2592 #define AP_DIR_FLAG_RECURSIVE 2
2593 
2597 typedef struct ap_dir_match_t ap_dir_match_t;
2598 
2602 struct ap_dir_match_t {
2604  apr_pool_t *p;
2606  apr_pool_t *ptemp;
2608  const char *prefix;
2610  const char *(*cb)(ap_dir_match_t *w, const char *fname);
2612  void *ctx;
2614  int flags;
2616  unsigned int depth;
2617 };
2618 
2639 AP_DECLARE(const char *)ap_dir_nofnmatch(ap_dir_match_t *w, const char *fname)
2640  __attribute__((nonnull(1,2)));
2641 
2660 AP_DECLARE(const char *)ap_dir_fnmatch(ap_dir_match_t *w, const char *path,
2661  const char *fname) __attribute__((nonnull(1,3)));
2662 
2670 AP_DECLARE(int) ap_is_chunked(apr_pool_t *p, const char *line);
2671 
2672 #ifdef __cplusplus
2673 }
2674 #endif
2675 
2676 #endif /* !APACHE_HTTPD_H */
2677 
apr_uri_t parsed_uri
Definition: httpd.h:1064
apr_bucket_brigade * kept_body
Definition: httpd.h:923
void * sbh
Definition: httpd.h:1176
char * user
Definition: httpd.h:975
void void * ap_realloc(void *ptr, size_t size) AP_FN_ATTR_WARN_UNUSED_RESULT AP_FN_ATTR_ALLOC_SIZE(2)
apr_port_t port
Definition: httpd.h:1353
void * context
Definition: httpd.h:1395
size_t apr_size_t
Definition: apr.h:397
int major
Definition: httpd.h:414
ap_regex_t * ap_pregcomp(apr_pool_t *p, const char *pattern, int cflags)
char * ap_getword(apr_pool_t *p, const char **line, char stop)
int ap_os_is_path_absolute(apr_pool_t *p, const char *dir) AP_FN_ATTR_NONNULL_ALL
char * ap_pbase64encode(apr_pool_t *p, char *string)
char * ap_pregsub(apr_pool_t *p, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[])
struct ap_conf_vector_t * module_config
Definition: httpd.h:1338
const struct ap_logconf * log
Definition: httpd.h:1203
int idle
Definition: httpd.h:1410
#define ap_strrchr_c(s, c)
Definition: httpd.h:2409
struct ap_filter_conn_ctx * filter_conn_ctx
Definition: httpd.h:1236
APR Network library.
const char * ap_context_prefix(request_rec *r)
apr_pool_t * ptemp
Definition: httpd.h:2609
struct ap_errorlog_provider * errorlog_provider
Definition: httpd.h:1330
char * args
Definition: httpd.h:996
char * local_host
Definition: httpd.h:1161
const char * content_type
Definition: httpd.h:962
char * ap_make_dirstr_parent(apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
apr_off_t remaining
Definition: httpd.h:929
Definition: apr_arch_thread_mutex.h:28
Definition: apr_arch_file_io.h:107
const char * log_id
Definition: httpd.h:1029
Definition: httpd.h:1261
Definition: apr_tables.h:62
const char * ap_size_list_item(const char **field, int *len)
request_rec * prev
Definition: httpd.h:826
#define ap_strrchr(s, c)
Definition: httpd.h:2407
int ap_unescape_urlencoded(char *query)
char * ap_getword_conf(apr_pool_t *p, const char **line)
char * ap_getword_nc(apr_pool_t *p, char **line, char stop)
ap_method_list_t * allowed_methods
Definition: httpd.h:896
apr_table_t * override_list
Definition: httpd.h:764
float loadavg15
Definition: httpd.h:1430
server_rec * server
Definition: httpd.h:821
struct apr_bucket_alloc_t * bucket_alloc
Definition: httpd.h:1178
int eos_sent
Definition: httpd.h:1009
apr_table_t * subprocess_env
Definition: httpd.h:953
char * ap_pbase64decode(apr_pool_t *p, const char *bufcoded)
void * ap_palloc_debug(apr_pool_t *p, apr_size_t size)
apr_size_t ap_escape_errorlog_item(char *dest, const char *source, apr_size_t buflen) AP_FN_ATTR_NONNULL((1))
The representation of a filter chain.
Definition: util_filter.h:278
Definition: httpd.h:1255
int taint
Definition: httpd.h:1093
A structure to be used for Per-vhost config.
Definition: httpd.h:1294
Definition: httpd.h:2605
apr_uint32_t ap_random_pick(apr_uint32_t min, apr_uint32_t max)
struct apr_bucket_alloc_t apr_bucket_alloc_t
Definition: apr_buckets.h:123
int no_local_copy
Definition: httpd.h:1054
void ap_set_document_root(request_rec *r, const char *document_root)
const char * ap_get_server_description(void)
int64_t apr_int64_t
Definition: apr.h:389
char * ap_get_local_host(apr_pool_t *p)
float loadavg5
Definition: httpd.h:1428
unsigned long access_count
Definition: httpd.h:1416
#define AP_DECLARE(x)
Definition: macros.h:1
apr_array_header_t * allowed_xmethods
Definition: httpd.h:894
apr_array_header_t * wild_names
Definition: httpd.h:1380
#define ap_strstr_c(s, c)
Definition: httpd.h:2413
apr_interval_time_t timeout
Definition: httpd.h:1369
char * ap_getword_conf_nc(apr_pool_t *p, char **line)
const char * method
Definition: httpd.h:870
void ap_no2slash_ex(char *name, int is_fs_path) AP_FN_ATTR_NONNULL_ALL
conn_rec * connection
Definition: httpd.h:819
void ap_bin2hex(const void *src, apr_size_t srclen, char *dest) AP_FN_ATTR_NONNULL_ALL
char * ap_make_dirstr_prefix(char *d, const char *s, int n) AP_FN_ATTR_NONNULL_ALL
server_rec * base_server
Definition: httpd.h:1132
char * vlist_validator
Definition: httpd.h:972
request_rec * next
Definition: httpd.h:824
apr_thread_mutex_t * invoke_mtx
Definition: httpd.h:1060
const char * ap_get_server_banner(void)
char * server_hostname
Definition: httpd.h:1362
APR Hash Tables.
Apache Regex defines.
apr_thread_t * current_thread
Definition: httpd.h:1217
unsigned int clogging_input_filters
Definition: httpd.h:1185
apr_int64_t allowed
Definition: httpd.h:892
struct ap_filter_t * proto_input_filters
Definition: httpd.h:1049
apr_file_t * error_log
Definition: httpd.h:1326
char * error_fname
Definition: httpd.h:1324
int double_reverse
Definition: httpd.h:1088
const char * hostname
Definition: httpd.h:853
char * ap_auth_type
Definition: httpd.h:977
struct ap_filter_t * proto_output_filters
Definition: httpd.h:1046
const char * short_name
Definition: httpd.h:805
int ap_cstr_casecmp(const char *s1, const char *s2)
void * suspended_baton
Definition: httpd.h:1230
This represents the result of calling htaccess; these are cached for each request.
Definition: httpd.h:756
#define ap_strchr_c(s, c)
Definition: httpd.h:2405
apr_table_t * trailers_out
Definition: httpd.h:1078
apr_sockaddr_t * host_addr
Definition: httpd.h:1300
int ap_is_url(const char *u)
apr_table_t * notes
Definition: httpd.h:955
apr_pool_t * pool
Definition: httpd.h:801
signed int double_reverse
Definition: httpd.h:1189
char * ap_escape_urlencoded(apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
void * vhost_lookup_data
Definition: httpd.h:1134
char * ap_get_list_item(apr_pool_t *p, const char **field)
Definition: httpd.h:1118
const char * path
Definition: httpd.h:1383
apr_table_t * headers_out
Definition: httpd.h:948
A structure that represents one process.
Definition: httpd.h:799
char * ap_getword_conf2(apr_pool_t *p, const char **line)
Definition: apr_buckets.h:258
The numeric version information is broken out into fields within this structure.
Definition: httpd.h:413
int keep_alive
Definition: httpd.h:1375
float loadavg
Definition: httpd.h:1426
const char * handler
Definition: httpd.h:964
server_addr_rec * next
Definition: httpd.h:1296
apr_status_t ap_pstr2_alnum(apr_pool_t *p, const char *src, const char **dest)
apr_int64_t apr_interval_time_t
Definition: apr_time.h:55
const char * prefix
Definition: mod_dav.h:614
APR Miscellaneous library routines.
int ap_parse_form_data(request_rec *r, struct ap_filter_t *f, apr_array_header_t **ptr, apr_size_t num, apr_size_t size)
void * ctx
Definition: httpd.h:2615
APR Poll interface.
int ap_ind(const char *str, char c)
char * ap_escape_quotes(apr_pool_t *p, const char *instring)
int ap_strcmp_match(const char *str, const char *expected) AP_FN_ATTR_NONNULL_ALL
const char * defn_name
Definition: httpd.h:1343
Structure to store things which are per connection.
Definition: httpd.h:1128
int keepalives
Definition: httpd.h:1199
char * server_admin
Definition: httpd.h:1360
apr_sockaddr_t * local_addr
Definition: httpd.h:1138
Definition: httpd.h:1254
char * ap_ht_time(apr_pool_t *p, apr_time_t t, const char *fmt, int gmt)
Definition: httpd.h:1257
dav_buffer apr_size_t size
Definition: mod_dav.h:457
const char * ap_resolve_env(apr_pool_t *p, const char *word)
struct ap_filter_t * output_filters
Definition: httpd.h:1040
Symbol export macros and hook functions.
int proto_num
Definition: httpd.h:847
apr_array_header_t * method_list
Definition: httpd.h:664
char * ap_escape_html2(apr_pool_t *p, const char *s, int toasc) AP_FN_ATTR_NONNULL_ALL
apr_status_t ap_pbase64decode_strict(apr_pool_t *p, const char *encoded, char **decoded, apr_size_t *len)
int method_number
Definition: httpd.h:868
char * ap_getword_white_nc(apr_pool_t *p, char **line)
int ap_find_etag_weak(apr_pool_t *p, const char *line, const char *tok)
char * client_ip
Definition: httpd.h:1147
#define AP_FN_ATTR_NONNULL_ALL
Definition: ap_config.h:260
char * ap_getword_nulls(apr_pool_t *p, const char **line, char stop)
struct ap_conf_vector_t * conn_config
Definition: httpd.h:1167
apr_time_t request_time
Definition: httpd.h:856
apr_int64_t apr_time_t
Definition: apr_time.h:45
conn_state_e
Definition: httpd.h:1251
const char * log_id
Definition: httpd.h:1208
conn_state_t * cs
Definition: httpd.h:1180
APR memory allocation.
Definition: httpd.h:1242
const char * ap_stripprefix(const char *bigstring, const char *prefix) AP_FN_ATTR_NONNULL_ALL
const char const char * ap_dir_fnmatch(ap_dir_match_t *w, const char *path, const char *fname) __attribute__((nonnull(1
struct ap_conf_vector_t * htaccess
Definition: httpd.h:766
const char * dir
Definition: httpd.h:758
unsigned int keep_alive_timeout_set
Definition: httpd.h:1400
const char * server_scheme
Definition: httpd.h:1355
int level
Definition: httpd.h:1310
int header_only
Definition: httpd.h:845
Definition: httpd.h:1256
char * the_request
Definition: httpd.h:836
A structure to store information for each virtual server.
Definition: httpd.h:1315
char * ap_getword_white(apr_pool_t *p, const char **line)
int no_cache
Definition: httpd.h:1052
char * uri
Definition: httpd.h:986
int ap_array_str_contains(const apr_array_header_t *array, const char *s)
int chunked
Definition: httpd.h:912
struct ap_conf_vector_t * request_config
Definition: httpd.h:1019
char * path_info
Definition: httpd.h:994
int ap_find_etag_strong(apr_pool_t *p, const char *line, const char *tok)
apr_table_t * trailers_in
Definition: httpd.h:1076
const struct htaccess_result * next
Definition: httpd.h:768
A structure to contain connection state information.
Definition: httpd.h:1273
int flags
Definition: httpd.h:2617
dav_error * src
Definition: mod_dav.h:186
char * ap_escape_path_segment(apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
const char * add_string
Definition: httpd.h:417
const char * ap_scan_vchar_obstext(const char *ptr)
apr_pool_t * pool
Definition: httpd.h:817
char * ap_escape_urlencoded_buffer(char *c, const char *s) AP_FN_ATTR_NONNULL_ALL
APR Table library.
const char * ap_context_document_root(request_rec *r)
int limit_req_fields
Definition: httpd.h:1392
process_rec * process
Definition: httpd.h:1317
apr_array_header_t * names
Definition: httpd.h:1378
int ap_array_str_index(const apr_array_header_t *array, const char *s, int start)
ap_conn_keepalive_e
Enumeration of connection keepalive options.
Definition: httpd.h:1116
Definition: apr_arch_threadproc.h:42
long id
Definition: httpd.h:1164
apr_table_t * notes
Definition: httpd.h:1170
Definition: ap_regex.h:111
A structure to hold server load params.
Definition: httpd.h:1408
APR-UTIL Buckets/Bucket Brigades.
int busy
Definition: httpd.h:1412
void ap_no2slash(char *name) AP_FN_ATTR_NONNULL_ALL
apr_port_t host_port
Definition: httpd.h:1302
apr_off_t sent_bodyct
Definition: httpd.h:899
conn_rec * master
Definition: httpd.h:1224
proxy_worker proxy_server_conf char * url
Definition: mod_proxy.h:625
const char * ap_parse_token_list_strict(apr_pool_t *p, const char *tok, apr_array_header_t **tokens, int skip_invalid)
char * remote_host
Definition: httpd.h:1151
char * ap_strcasestr(const char *s1, const char *s2) AP_FN_ATTR_NONNULL_ALL
server_rec * next
Definition: httpd.h:1319
apr_int64_t method_mask
Definition: httpd.h:662
#define AP_FN_ATTR_NONNULL(x)
Definition: ap_config.h:261
int ap_unescape_all(char *url)
apr_status_t ap_password_validate(request_rec *r, const char *username, const char *passwd, const char *hash)
int ap_cstr_casecmpn(const char *s1, const char *s2, apr_size_t n)
int ap_unescape_url(char *url)
unsigned int apr_uint32_t
Definition: apr.h:351
APR Platform Definitions.
const char * ap_dir_nofnmatch(ap_dir_match_t *w, const char *fname) __attribute__((nonnull(1
char * useragent_host
Definition: httpd.h:1083
void ap_pregfree(apr_pool_t *p, ap_regex_t *reg)
char * ap_make_full_path(apr_pool_t *a, const char *dir, const char *f) AP_FN_ATTR_NONNULL_ALL
request_rec * main
Definition: httpd.h:830
struct ap_conf_vector_t * per_dir_config
Definition: httpd.h:1017
char * ap_escape_path_segment_buffer(char *c, const char *s) AP_FN_ATTR_NONNULL_ALL
apr_sockaddr_t * useragent_addr
Definition: httpd.h:1072
Definition: httpd.h:1258
apr_pool_t * p
Definition: httpd.h:2607
void ap_abort_on_oom(void) __attribute__((noreturn))
conn_state_e state
Definition: httpd.h:1275
server_addr_rec * addrs
Definition: httpd.h:1367
char is_virtual
Definition: httpd.h:1347
unsigned int depth
Definition: httpd.h:2619
Definition: httpd.h:1259
Definition: httpd.h:1253
void * errorlog_provider_handle
Definition: httpd.h:1332
Definition: apr_uri.h:85
int status
Definition: httpd.h:861
char * remote_logname
Definition: httpd.h:1155
void ap_add_version_component(apr_pool_t *pconf, const char *component)
void * ap_malloc(size_t size) __attribute__((malloc)) AP_FN_ATTR_ALLOC_SIZE(1)
void ap_log_assert(const char *szExp, const char *szFile, int nLine) __attribute__((noreturn))
int ap_unescape_url_keep2f(char *url, int decode_slashes)
apr_pool_t * p
Version Release defines.
int ap_find_token(apr_pool_t *p, const char *line, const char *tok)
int read_chunked
Definition: httpd.h:919
Definition: httpd.h:1267
int keep_alive_max
Definition: httpd.h:1373
#define AP_FN_ATTR_ALLOC_SIZE(x)
Definition: ap_config.h:248
char * virthost
Definition: httpd.h:1298
char * canonical_filename
Definition: httpd.h:992
int async_filter
Definition: httpd.h:1239
APR Thread and Process Library.
struct ap_logconf log
Definition: httpd.h:1328
int used_path_info
Definition: httpd.h:1006
int ap_strcasecmp_match(const char *str, const char *expected) AP_FN_ATTR_NONNULL_ALL
char * ap_escape_logitem(apr_pool_t *p, const char *str) AP_FN_ATTR_NONNULL((1))
conn_rec * c
Definition: httpd.h:1243
apr_status_t ap_timeout_parameter_parse(const char *timeout_parameter, apr_interval_time_t *timeout, const char *default_time_unit)
int override_opts
Definition: httpd.h:762
apr_sockaddr_t * client_addr
Definition: httpd.h:1142
int ap_count_dirs(const char *path) AP_FN_ATTR_NONNULL_ALL
const char * prefix
Definition: httpd.h:2611
int ap_find_last_token(apr_pool_t *p, const char *line, const char *tok)
A structure that represents the current request.
Definition: httpd.h:815
int minor
Definition: httpd.h:415
char * ap_get_exec_line(apr_pool_t *p, const char *cmd, const char *const *argv)
conn_sense_e sense
Definition: httpd.h:1277
Apache filter library.
const char * content_encoding
Definition: httpd.h:967
Definition: httpd.h:1265
int ap_rind(const char *str, char c)
int proxyreq
Definition: httpd.h:843
struct ap_filter_t * input_filters
Definition: httpd.h:1172
Structure for handling HTTP methods.
Definition: httpd.h:660
int limit_req_line
Definition: httpd.h:1388
const char * range
Definition: httpd.h:908
int ap_is_directory(apr_pool_t *p, const char *name)
apr_finfo_t finfo
Definition: httpd.h:1066
int limit_req_fieldsize
Definition: httpd.h:1390
A structure to hold various server loadavg.
Definition: httpd.h:1424
const char * ap_scan_http_field_content(const char *ptr)
void * ap_pcalloc_debug(apr_pool_t *p, apr_size_t size)
dav_buffer const char * str
Definition: mod_dav.h:461
void ap_content_type_tolower(char *s)
const char * protocol
Definition: httpd.h:849
apr_pool_t * pconf
Definition: httpd.h:803
Definition: httpd.h:1266
apr_table_t * body_table
Definition: httpd.h:927
apr_pool_t * pool
Definition: httpd.h:1130
void ap_get_loadavg(ap_loadavg_t *ld) AP_FN_ATTR_NONNULL_ALL
int ap_is_matchexp(const char *str) AP_FN_ATTR_NONNULL_ALL
struct apr_table_t apr_table_t
Definition: apr_tables.h:56
apr_off_t clength
Definition: httpd.h:910
#define __attribute__(__x)
Definition: apr.h:63
int assbackwards
Definition: httpd.h:838
void ap_get_server_revision(ap_version_t *version)
apr_table_t * headers_in
Definition: httpd.h:946
const char * name
Definition: mod_dav.h:726
apr_table_t * err_headers_out
Definition: httpd.h:951
char * ap_field_noparam(apr_pool_t *p, const char *intype)
unsigned defn_line_number
Definition: httpd.h:1345
char * unparsed_uri
Definition: httpd.h:984
int read_body
Definition: httpd.h:917
apr_array_header_t * requests
Definition: httpd.h:1233
struct apr_pool_t apr_pool_t
Definition: apr_pools.h:60
int argc
Definition: httpd.h:809
Definition: httpd.h:2247
apr_status_t ap_pregsub_ex(apr_pool_t *p, char **result, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[], apr_size_t maxlen)
void ap_str_tolower(char *s)
Definition: ap_regex.h:118
const struct ap_logconf * log
Definition: httpd.h:1024
const char const char int ap_is_chunked(apr_pool_t *p, const char *line)
int apr_status_t
Definition: apr_errno.h:44
char * ap_getword_conf2_nc(apr_pool_t *p, char **line)
#define AP_FN_ATTR_WARN_UNUSED_RESULT
Definition: ap_config.h:239
Definition: httpd.h:1117
char * local_ip
Definition: httpd.h:1158
void * ctx
Definition: httpd.h:1227
request_rec * r
Definition: mod_dav.h:515
char * ap_get_token(apr_pool_t *p, const char **accept_line, int accept_white)
#define ap_strstr(s, c)
Definition: httpd.h:2411
char * ap_getword_nulls_nc(apr_pool_t *p, char **line, char stop)
char * ap_construct_server(apr_pool_t *p, const char *hostname, apr_port_t port, const request_rec *r) AP_FN_ATTR_NONNULL((1
void ap_random_insecure_bytes(void *buf, apr_size_t size)
apr_off_t read_length
Definition: httpd.h:931
APR-UTIL URI Routines.
apr_uint16_t apr_port_t
Definition: apr_network_io.h:257
APR Time Library.
Module Magic Number.
apr_status_t ap_str2_alnum(const char *src, char *dest)
void ap_getparents(char *name) AP_FN_ATTR_NONNULL_ALL
conn_sense_e
Definition: httpd.h:1264
void ap_str_toupper(char *s)
unsigned expecting_100
Definition: httpd.h:921
apr_time_t mtime
Definition: httpd.h:903
struct ap_conf_vector_t ap_conf_vector_t
Definition: http_config.h:519
int ap_request_has_body(request_rec *r)
char * filename
Definition: httpd.h:988
ap_conn_keepalive_e keepalive
Definition: httpd.h:1196
apr_array_header_t * slaves
Definition: httpd.h:1221
Definition: httpd.h:1305
void * ap_calloc(size_t nelem, size_t size) __attribute__((malloc)) AP_FN_ATTR_ALLOC_SIZE2(1
char * useragent_ip
Definition: httpd.h:1073
apr_off_t bytes_served
Definition: httpd.h:1414
#define malloc(x)
Definition: apr_private.h:170
dav_resource int dav_locktoken dav_response int flags
Definition: mod_dav.h:1346
void ap_get_sload(ap_sload_t *ld) AP_FN_ATTR_NONNULL_ALL
char char * ap_escape_shell_cmd(apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
struct ap_filter_t * input_filters
Definition: httpd.h:1042
void ap_set_context_info(request_rec *r, const char *prefix, const char *document_root)
unsigned aborted
Definition: httpd.h:1192
char * ap_os_escape_path(apr_pool_t *p, const char *path, int partial) AP_FN_ATTR_NONNULL_ALL
apr_interval_time_t keep_alive_timeout
Definition: httpd.h:1371
Definition: httpd.h:1119
struct ap_conf_vector_t * lookup_defaults
Definition: httpd.h:1340
int ap_request_tainted(request_rec *r, int flags)
int ap_find_list_item(apr_pool_t *p, const char *line, const char *tok)
off_t apr_off_t
Definition: apr.h:399
Definition: apr_file_info.h:174
int ap_is_rdirectory(apr_pool_t *p, const char *name)
int patch
Definition: httpd.h:416
#define ap_strchr(s, c)
Definition: httpd.h:2403
signed char * module_levels
Definition: httpd.h:1307
const char * status_line
Definition: httpd.h:859
Definition: apr_network_io.h:266
int pathlen
Definition: httpd.h:1385
#define AP_FN_ATTR_ALLOC_SIZE2(x, y)
Definition: ap_config.h:249
const struct htaccess_result * htaccess
Definition: httpd.h:1037
const char * ap_psignature(const char *prefix, request_rec *r)
char * ap_append_pid(apr_pool_t *p, const char *string, const char *delim)
const char * ap_scan_http_token(const char *ptr)
apr_off_t bytes_sent
Definition: httpd.h:901
apr_array_header_t * content_languages
Definition: httpd.h:969
const char * ap_get_server_built(void)
Definition: http_core.h:948
struct ap_filter_t * output_filters
Definition: httpd.h:1174
const char *const * argv
Definition: httpd.h:807