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 
647 #define AP_METHOD_BIT ((ap_method_mask_t)1)
648 
652 typedef struct ap_method_list_t ap_method_list_t;
653 
661 struct ap_method_list_t {
663  ap_method_mask_t method_mask;
666 };
667 
673 #define CGI_MAGIC_TYPE "application/x-httpd-cgi"
674 
675 #define INCLUDES_MAGIC_TYPE "text/x-server-parsed-html"
677 #define INCLUDES_MAGIC_TYPE3 "text/x-server-parsed-html3"
679 #define DIR_MAGIC_TYPE "httpd/unix-directory"
681 #define AP_DEFAULT_HANDLER_NAME ""
682 #define AP_IS_DEFAULT_HANDLER_NAME(x) (*x == '\0')
683 
685 /* Just in case your linefeed isn't the one the other end is expecting. */
686 #if !APR_CHARSET_EBCDIC
687 
688 #define LF 10
689 
690 #define CR 13
692 #define CRLF "\015\012"
693 #else /* APR_CHARSET_EBCDIC */
694 /* For platforms using the EBCDIC charset, the transition ASCII->EBCDIC is done
695  * in the buff package (bread/bputs/bwrite). Everywhere else, we use
696  * "native EBCDIC" CR and NL characters. These are therefore
697  * defined as
698  * '\r' and '\n'.
699  */
700 #define CR '\r'
701 #define LF '\n'
702 #define CRLF "\r\n"
703 #endif /* APR_CHARSET_EBCDIC */
704 
705 #define CRLF_ASCII "\015\012"
706 #define ZERO_ASCII "\060"
707 
715 #define REQUEST_NO_BODY 0
716 
717 #define REQUEST_CHUNKED_ERROR 1
719 #define REQUEST_CHUNKED_DECHUNK 2
730 #define AP_REQ_ACCEPT_PATH_INFO 0
731 
732 #define AP_REQ_REJECT_PATH_INFO 1
734 #define AP_REQ_DEFAULT_PATH_INFO 2
739 /*
740  * Things which may vary per file-lookup WITHIN a request ---
741  * e.g., state of MIME config. Basically, the name of an object, info
742  * about the object, and any other info we may have which may need to
743  * change as we go poking around looking for it (e.g., overridden by
744  * .htaccess files).
745  *
746  * Note how the default state of almost all these things is properly
747  * zero, so that allocating it with pcalloc does the right thing without
748  * a whole lot of hairy initialization... so long as we are willing to
749  * make the (fairly) portable assumption that the bit pattern of a NULL
750  * pointer is, in fact, zero.
751  */
752 
757 struct htaccess_result {
759  const char *dir;
761  int override;
763  int override_opts;
767  struct ap_conf_vector_t *htaccess;
769  const struct htaccess_result *next;
770 };
771 
772 /* The following four types define a hierarchy of activities, so that
773  * given a request_rec r you can write r->connection->server->process
774  * to get to the process_rec. While this reduces substantially the
775  * number of arguments that various hooks require beware that in
776  * threaded versions of the server you must consider multiplexing
777  * issues. */
778 
779 
781 typedef struct process_rec process_rec;
783 typedef struct server_rec server_rec;
785 typedef struct conn_rec conn_rec;
787 typedef struct conn_slave_rec conn_slave_rec;
789 typedef struct request_rec request_rec;
791 typedef struct conn_state_t conn_state_t;
793 /* ### would be nice to not include this from httpd.h ... */
794 /* This comes after we have defined the request_rec type */
795 #include "apr_uri.h"
796 
800 struct process_rec {
802  apr_pool_t *pool;
804  apr_pool_t *pconf;
806  const char *short_name;
808  const char * const *argv;
810  int argc;
811 };
812 
816 struct request_rec {
818  apr_pool_t *pool;
827  request_rec *prev;
831  request_rec *main;
832 
833  /* Info about the request itself... we begin with stuff that only
834  * protocol.c should ever touch...
835  */
837  char *the_request;
839  int assbackwards;
844  int proxyreq;
846  int header_only;
848  int proto_num;
850  const char *protocol;
854  const char *hostname;
855 
858 
860  const char *status_line;
862  int status;
864  /* Request method, two ways; also, protocol, etc.. Outside of protocol.c,
865  * look, but don't touch.
866  */
867 
869  int method_number;
871  const char *method;
893  ap_method_mask_t allowed;
906  /* HTTP/1.1 connection-level features */
909  const char *range;
913  int chunked;
918  int read_body;
920  int read_chunked;
922  unsigned expecting_100;
926  /* XXX: ap_body_to_table has been removed. Remove body_table too or
927  * XXX: keep it to reintroduce ap_body_to_table without major bump? */
934  /* MIME header environments, in and out. Also, an array containing
935  * environment variables to be passed to subprocesses, so people can
936  * write modules to add to that environment.
937  *
938  * The difference between headers_out and err_headers_out is that the
939  * latter are printed even on error, and persist across internal redirects
940  * (so the headers printed for ErrorDocument handlers will have them).
941  *
942  * The 'notes' apr_table_t is for notes from one module to another, with no
943  * other set purpose in mind...
944  */
945 
958  /* content_type, handler, content_encoding, and all content_languages
959  * MUST be lowercased strings. They may be pointers to static strings;
960  * they should not be modified in place.
961  */
963  const char *content_type; /* Break these out --- we dispatch on 'em */
965  const char *handler; /* What we *really* dispatch on */
968  const char *content_encoding;
974 
976  char *user;
978  char *ap_auth_type;
980  /* What object is being requested (either directly, or via include
981  * or content-negotiation mapping).
982  */
983 
985  char *unparsed_uri;
987  char *uri;
989  char *filename;
993  char *canonical_filename;
995  char *path_info;
997  char *args;
1007  int used_path_info;
1008 
1011 
1012  /* Various other config info which may change with .htaccess files
1013  * These are config vectors, with one void* pointer for each module
1014  * (the thing pointed to being the module's business).
1015  */
1016 
1025  const struct ap_logconf *log;
1026 
1030  const char *log_id;
1031 
1038  const struct htaccess_result *htaccess;
1039 
1043  struct ap_filter_t *input_filters;
1051 
1055  int no_local_copy;
1060 #if APR_HAS_THREADS
1062 #endif
1063 
1074  char *useragent_ip;
1075 
1084  char *useragent_host;
1089  int double_reverse;
1094  int taint;
1095 };
1096 
1107 #define PROXYREQ_NONE 0
1108 #define PROXYREQ_PROXY 1
1109 #define PROXYREQ_REVERSE 2
1110 #define PROXYREQ_RESPONSE 3
1112 /* @} */
1117 typedef enum {
1119  AP_CONN_CLOSE,
1123 /* For struct ap_filter and ap_filter_conn_ctx */
1124 #include "util_filter.h"
1125 
1129 struct conn_rec {
1131  apr_pool_t *pool;
1135  void *vhost_lookup_data;
1137  /* Information about the connection itself */
1144 
1148  char *client_ip;
1152  char *remote_host;
1155  /* TODO: Remove from request_rec, make local to mod_ident */
1156  char *remote_logname;
1157 
1159  char *local_ip;
1162  char *local_host;
1163 
1165  long id;
1173  struct ap_filter_t *input_filters;
1175  struct ap_filter_t *output_filters;
1177  void *sbh;
1181  conn_state_t *cs;
1186  unsigned int clogging_input_filters:1;
1187 
1190  signed int double_reverse:2;
1191 
1193  unsigned aborted;
1194 
1198 
1201 
1204  const struct ap_logconf *log;
1205 
1209  const char *log_id;
1210 
1211 
1217 #if APR_HAS_THREADS
1219 #endif
1220 
1223 
1226 
1228  void *ctx;
1229 
1232 
1235 
1237  struct ap_filter_conn_ctx *filter_conn_ctx;
1238 
1241 };
1242 
1244  conn_rec *c;
1245 };
1252 typedef enum {
1258  CONN_STATE_LINGER, /* connection may be closed with lingering */
1259  CONN_STATE_LINGER_NORMAL, /* MPM has started lingering close with normal timeout */
1260  CONN_STATE_LINGER_SHORT, /* MPM has started lingering close with short timeout */
1262  CONN_STATE_NUM /* Number of states (keep/kept last) */
1264 
1265 typedef enum {
1267  CONN_SENSE_WANT_READ, /* next event must be read */
1268  CONN_SENSE_WANT_WRITE /* next event must be write */
1274 struct conn_state_t {
1279 };
1280 
1281 /* Per-vhost config... */
1282 
1287 #define DEFAULT_VHOST_ADDR 0xfffffffful
1288 
1289 
1294 typedef struct server_addr_rec server_addr_rec;
1295 struct server_addr_rec {
1299  char *virthost;
1304 };
1305 
1306 struct ap_logconf {
1308  signed char *module_levels;
1311  int level;
1312 };
1316 struct server_rec {
1320  server_rec *next;
1322  /* Log files --- note that transfer log is now in the modules... */
1325  char *error_fname;
1329  struct ap_logconf log;
1335  /* Module-specific configuration for server, and defaults... */
1344  const char *defn_name;
1346  unsigned defn_line_number;
1348  char is_virtual;
1350 
1351  /* Information for redirects */
1352 
1354  apr_port_t port;
1356  const char *server_scheme;
1358  /* Contact information */
1361  char *server_admin;
1363  char *server_hostname;
1365  /* Transaction handling */
1374  int keep_alive_max;
1376  int keep_alive;
1384  const char *path;
1386  int pathlen;
1391  int limit_req_fieldsize;
1393  int limit_req_fields;
1396  void *context;
1397 
1401  unsigned int keep_alive_timeout_set:1;
1402 };
1403 
1408 typedef struct ap_sload_t ap_sload_t;
1409 struct ap_sload_t {
1410  /* percentage of process/threads ready/idle (0->100)*/
1411  int idle;
1412  /* percentage of process/threads busy (0->100) */
1413  int busy;
1414  /* total bytes served */
1416  /* total access count */
1417  unsigned long access_count;
1418 };
1419 
1424 typedef struct ap_loadavg_t ap_loadavg_t;
1425 struct ap_loadavg_t {
1426  /* current loadavg, ala getloadavg() */
1427  float loadavg;
1428  /* 5 min loadavg */
1429  float loadavg5;
1430  /* 15 min loadavg */
1431  float loadavg15;
1432 };
1433 
1444 
1450 AP_DECLARE(const char *) ap_context_prefix(request_rec *r);
1451 
1460 AP_DECLARE(void) ap_set_context_info(request_rec *r, const char *prefix,
1461  const char *document_root);
1462 
1468 AP_DECLARE(void) ap_set_document_root(request_rec *r, const char *document_root);
1469 
1477 AP_DECLARE(char *) ap_field_noparam(apr_pool_t *p, const char *intype);
1478 
1487 AP_DECLARE(char *) ap_ht_time(apr_pool_t *p, apr_time_t t, const char *fmt, int gmt);
1488 
1489 /* String handling. The *_nc variants allow you to use non-const char **s as
1490  arguments (unfortunately C won't automatically convert a char ** to a const
1491  char **) */
1492 
1500 AP_DECLARE(char *) ap_getword(apr_pool_t *p, const char **line, char stop);
1501 
1510 AP_DECLARE(char *) ap_getword_nc(apr_pool_t *p, char **line, char stop);
1511 
1519 AP_DECLARE(char *) ap_getword_white(apr_pool_t *p, const char **line);
1520 
1529 AP_DECLARE(char *) ap_getword_white_nc(apr_pool_t *p, char **line);
1530 
1539 AP_DECLARE(char *) ap_getword_nulls(apr_pool_t *p, const char **line,
1540  char stop);
1541 
1551 AP_DECLARE(char *) ap_getword_nulls_nc(apr_pool_t *p, char **line, char stop);
1552 
1559 AP_DECLARE(char *) ap_getword_conf(apr_pool_t *p, const char **line);
1560 
1568 AP_DECLARE(char *) ap_getword_conf_nc(apr_pool_t *p, char **line);
1569 
1577 AP_DECLARE(char *) ap_getword_conf2(apr_pool_t *p, const char **line);
1578 
1587 AP_DECLARE(char *) ap_getword_conf2_nc(apr_pool_t *p, char **line);
1588 
1599 AP_DECLARE(const char *) ap_resolve_env(apr_pool_t *p, const char * word);
1600 
1610 AP_DECLARE(const char *) ap_size_list_item(const char **field, int *len);
1611 
1622 AP_DECLARE(char *) ap_get_list_item(apr_pool_t *p, const char **field);
1623 
1632 AP_DECLARE(int) ap_find_list_item(apr_pool_t *p, const char *line, const char *tok);
1633 
1641 AP_DECLARE(int) ap_find_etag_weak(apr_pool_t *p, const char *line, const char *tok);
1642 
1650 AP_DECLARE(int) ap_find_etag_strong(apr_pool_t *p, const char *line, const char *tok);
1651 
1652 /* Scan a string for field content chars, as defined by RFC7230 section 3.2
1653  * including VCHAR/obs-text, as well as HT and SP
1654  * @param ptr The string to scan
1655  * @return A pointer to the first (non-HT) ASCII ctrl character.
1656  * @note lws and trailing whitespace are scanned, the caller is responsible
1657  * for trimming leading and trailing whitespace
1658  */
1659 AP_DECLARE(const char *) ap_scan_http_field_content(const char *ptr);
1660 
1661 /* Scan a string for token characters, as defined by RFC7230 section 3.2.6
1662  * @param ptr The string to scan
1663  * @return A pointer to the first non-token character.
1664  */
1665 AP_DECLARE(const char *) ap_scan_http_token(const char *ptr);
1666 
1667 /* Scan a string for visible ASCII (0x21-0x7E) or obstext (0x80+)
1668  * and return a pointer to the first SP/CTL/NUL character encountered.
1669  * @param ptr The string to scan
1670  * @return A pointer to the first SP/CTL character.
1671  */
1672 AP_DECLARE(const char *) ap_scan_vchar_obstext(const char *ptr);
1673 
1687 AP_DECLARE(const char *) ap_parse_token_list_strict(apr_pool_t *p, const char *tok,
1688  apr_array_header_t **tokens,
1689  int skip_invalid);
1690 
1701 AP_DECLARE(char *) ap_get_token(apr_pool_t *p, const char **accept_line, int accept_white);
1702 
1710 AP_DECLARE(int) ap_find_token(apr_pool_t *p, const char *line, const char *tok);
1711 
1719 AP_DECLARE(int) ap_find_last_token(apr_pool_t *p, const char *line, const char *tok);
1720 
1726 AP_DECLARE(int) ap_is_url(const char *u);
1727 
1733 AP_DECLARE(int) ap_unescape_all(char *url);
1734 
1741 AP_DECLARE(int) ap_unescape_url(char *url);
1742 
1750 AP_DECLARE(int) ap_unescape_url_keep2f(char *url, int decode_slashes);
1751 
1758 AP_DECLARE(int) ap_unescape_urlencoded(char *query);
1759 
1765 AP_DECLARE(void) ap_no2slash(char *name)
1774 AP_DECLARE(void) ap_no2slash_ex(char *name, int is_fs_path)
1775  AP_FN_ATTR_NONNULL_ALL;
1776 
1777 
1783 AP_DECLARE(void) ap_getparents(char *name)
1784  AP_FN_ATTR_NONNULL_ALL;
1785 
1793 AP_DECLARE(char *) ap_escape_path_segment(apr_pool_t *p, const char *s)
1794  AP_FN_ATTR_NONNULL_ALL;
1795 
1803 AP_DECLARE(char *) ap_escape_path_segment_buffer(char *c, const char *s)
1804  AP_FN_ATTR_NONNULL_ALL;
1805 
1816 AP_DECLARE(char *) ap_os_escape_path(apr_pool_t *p, const char *path, int partial)
1817  AP_FN_ATTR_NONNULL_ALL;
1818 
1820 #define ap_escape_uri(ppool,path) ap_os_escape_path(ppool,path,1)
1821 
1829 AP_DECLARE(char *) ap_escape_urlencoded(apr_pool_t *p, const char *s)
1830  AP_FN_ATTR_NONNULL_ALL;
1831 
1839 AP_DECLARE(char *) ap_escape_urlencoded_buffer(char *c, const char *s)
1840  AP_FN_ATTR_NONNULL_ALL;
1841 
1849 #define ap_escape_html(p,s) ap_escape_html2(p,s,0)
1850 
1858 AP_DECLARE(char *) ap_escape_html2(apr_pool_t *p, const char *s, int toasc)
1859  AP_FN_ATTR_NONNULL_ALL;
1860 
1868 AP_DECLARE(char *) ap_escape_logitem(apr_pool_t *p, const char *str)
1869  AP_FN_ATTR_NONNULL((1));
1870 
1879 AP_DECLARE(apr_size_t) ap_escape_errorlog_item(char *dest, const char *source,
1880  apr_size_t buflen)
1881  AP_FN_ATTR_NONNULL((1));
1882 
1891 AP_DECLARE(char *) ap_construct_server(apr_pool_t *p, const char *hostname,
1892  apr_port_t port, const request_rec *r)
1893  AP_FN_ATTR_NONNULL((1,4));
1894 
1902 AP_DECLARE(char *) ap_escape_shell_cmd(apr_pool_t *p, const char *s)
1903  AP_FN_ATTR_NONNULL_ALL;
1904 
1910 AP_DECLARE(int) ap_count_dirs(const char *path)
1911  AP_FN_ATTR_NONNULL_ALL;
1912 
1924 AP_DECLARE(char *) ap_make_dirstr_prefix(char *d, const char *s, int n)
1925  AP_FN_ATTR_NONNULL_ALL;
1926 
1934 AP_DECLARE(char *) ap_make_dirstr_parent(apr_pool_t *p, const char *s)
1935  AP_FN_ATTR_NONNULL_ALL;
1936 
1950 AP_DECLARE(char *) ap_make_full_path(apr_pool_t *a, const char *dir, const char *f)
1951  AP_FN_ATTR_NONNULL_ALL;
1952 
1961 AP_DECLARE(int) ap_os_is_path_absolute(apr_pool_t *p, const char *dir)
1962  AP_FN_ATTR_NONNULL_ALL;
1963 
1971 AP_DECLARE(int) ap_is_matchexp(const char *str)
1972  AP_FN_ATTR_NONNULL_ALL;
1973 
1980 AP_DECLARE(int) ap_strcmp_match(const char *str, const char *expected)
1981  AP_FN_ATTR_NONNULL_ALL;
1982 
1990 AP_DECLARE(int) ap_strcasecmp_match(const char *str, const char *expected)
1991  AP_FN_ATTR_NONNULL_ALL;
1992 
2000 AP_DECLARE(char *) ap_strcasestr(const char *s1, const char *s2)
2001  AP_FN_ATTR_NONNULL_ALL;
2002 
2009 AP_DECLARE(const char *) ap_stripprefix(const char *bigstring,
2010  const char *prefix)
2011  AP_FN_ATTR_NONNULL_ALL;
2012 
2020 AP_DECLARE(char *) ap_pbase64decode(apr_pool_t *p, const char *bufcoded);
2021 
2040  const char *encoded,
2041  char **decoded,
2042  apr_size_t *len);
2043 
2051 AP_DECLARE(char *) ap_pbase64encode(apr_pool_t *p, char *string);
2052 
2066 AP_DECLARE(ap_regex_t *) ap_pregcomp(apr_pool_t *p, const char *pattern,
2067  int cflags);
2068 
2077 
2091 AP_DECLARE(char *) ap_pregsub(apr_pool_t *p, const char *input,
2092  const char *source, apr_size_t nmatch,
2093  ap_regmatch_t pmatch[]);
2094 
2109 AP_DECLARE(apr_status_t) ap_pregsub_ex(apr_pool_t *p, char **result,
2110  const char *input, const char *source,
2111  apr_size_t nmatch,
2112  ap_regmatch_t pmatch[],
2113  apr_size_t maxlen);
2114 
2120 AP_DECLARE(void) ap_content_type_tolower(char *s);
2121 
2126 AP_DECLARE(void) ap_str_tolower(char *s);
2127 
2132 AP_DECLARE(void) ap_str_toupper(char *s);
2133 
2141 AP_DECLARE(int) ap_ind(const char *str, char c); /* Sigh... */
2142 
2150 AP_DECLARE(int) ap_rind(const char *str, char c);
2151 
2159 AP_DECLARE(char *) ap_escape_quotes(apr_pool_t *p, const char *instring);
2160 
2171 AP_DECLARE(char *) ap_append_pid(apr_pool_t *p, const char *string,
2172  const char *delim);
2173 
2193  const char *timeout_parameter,
2194  apr_interval_time_t *timeout,
2195  const char *default_time_unit);
2196 
2204 
2206 #define AP_TAINT_HTACCESS 0x1
2207 
2215 
2227  const char **dest);
2228 
2238 AP_DECLARE(apr_status_t) ap_str2_alnum(const char *src, char *dest);
2239 
2248 typedef struct {
2249  const char *name;
2250  apr_bucket_brigade *value;
2264  apr_array_header_t **ptr,
2265  apr_size_t num, apr_size_t size);
2266 
2267 /* Misc system hackery */
2274 AP_DECLARE(int) ap_is_rdirectory(apr_pool_t *p, const char *name);
2275 
2282 AP_DECLARE(int) ap_is_directory(apr_pool_t *p, const char *name);
2283 
2284 #ifdef _OSD_POSIX
2285 extern int os_init_job_environment(server_rec *s, const char *user_name, int one_process);
2286 #endif /* _OSD_POSIX */
2287 
2293 char *ap_get_local_host(apr_pool_t *p);
2294 
2301 AP_DECLARE(void) ap_log_assert(const char *szExp, const char *szFile, int nLine)
2302  __attribute__((noreturn));
2303 
2307 #define ap_assert(exp) ((exp) ? (void)0 : ap_log_assert(#exp,__FILE__,__LINE__))
2308 
2316 #ifdef AP_DEBUG
2317 #define AP_DEBUG_ASSERT(exp) ap_assert(exp)
2318 #else
2319 #define AP_DEBUG_ASSERT(exp) ((void)0)
2320 #endif
2321 
2331 #define SIGSTOP_DETACH 1
2332 
2333 #define SIGSTOP_MAKE_CHILD 2
2335 #define SIGSTOP_SPAWN_CHILD 4
2337 #define SIGSTOP_PIPED_LOG_SPAWN 8
2339 #define SIGSTOP_CGI_CHILD 16
2342 #ifdef DEBUG_SIGSTOP
2343 extern int raise_sigstop_flags;
2344 #define RAISE_SIGSTOP(x) do { \
2345  if (raise_sigstop_flags & SIGSTOP_##x) raise(SIGSTOP);\
2346  } while (0)
2347 #else
2348 #define RAISE_SIGSTOP(x)
2349 #endif
2350 
2357 AP_DECLARE(const char *) ap_psignature(const char *prefix, request_rec *r);
2358 
2359  /* The C library has functions that allow const to be silently dropped ...
2360  these macros detect the drop in maintainer mode, but use the native
2361  methods for normal builds
2362 
2363  Note that on some platforms (e.g., AIX with gcc, Solaris with gcc), string.h needs
2364  to be included before the macros are defined or compilation will fail.
2365  */
2366 #include <string.h>
2367 
2368 AP_DECLARE(char *) ap_strchr(char *s, int c);
2369 AP_DECLARE(const char *) ap_strchr_c(const char *s, int c);
2370 AP_DECLARE(char *) ap_strrchr(char *s, int c);
2371 AP_DECLARE(const char *) ap_strrchr_c(const char *s, int c);
2372 AP_DECLARE(char *) ap_strstr(char *s, const char *c);
2373 AP_DECLARE(const char *) ap_strstr_c(const char *s, const char *c);
2376 
2377 #ifdef AP_DEBUG
2378 
2379 #undef strchr
2380 # define strchr(s, c) ap_strchr(s,c)
2381 #undef strrchr
2382 # define strrchr(s, c) ap_strrchr(s,c)
2383 #undef strstr
2384 # define strstr(s, c) ap_strstr(s,c)
2385 
2386 #if !defined(AP_DEBUG_NO_ALLOC_POISON) && !APR_POOL_DEBUG
2387 /*
2388  * ap_palloc_debug initializes allocated memory to non-zero
2389  */
2390 #define apr_palloc ap_palloc_debug
2391 /*
2392  * this is necessary to avoid useless double memset of memory
2393  * with ap_palloc_debug
2394  */
2395 #ifdef apr_pcalloc
2396 #undef apr_pcalloc
2397 #endif
2398 #define apr_pcalloc ap_pcalloc_debug
2399 #endif
2400 
2401 #else
2402 
2404 # define ap_strchr(s, c) strchr(s, c)
2405 
2406 # define ap_strchr_c(s, c) strchr(s, c)
2408 # define ap_strrchr(s, c) strrchr(s, c)
2410 # define ap_strrchr_c(s, c) strrchr(s, c)
2412 # define ap_strstr(s, c) strstr(s, c)
2414 # define ap_strstr_c(s, c) strstr(s, c)
2416 #endif
2427 AP_DECLARE(void) ap_random_insecure_bytes(void *buf, apr_size_t size);
2428 
2436 
2440 AP_DECLARE(void) ap_abort_on_oom(void) __attribute__((noreturn));
2441 
2448 AP_DECLARE(void *) ap_malloc(size_t size)
2451 
2459 AP_DECLARE(void *) ap_calloc(size_t nelem, size_t size)
2462 
2470 AP_DECLARE(void *) ap_realloc(void *ptr, size_t size)
2472  AP_FN_ATTR_ALLOC_SIZE(2);
2473 
2479  AP_FN_ATTR_NONNULL_ALL;
2480 
2486  AP_FN_ATTR_NONNULL_ALL;
2487 
2496 AP_DECLARE(void) ap_bin2hex(const void *src, apr_size_t srclen, char *dest)
2497  AP_FN_ATTR_NONNULL_ALL;
2498 
2512  const char *username,
2513  const char *passwd,
2514  const char *hash);
2515 
2525  const char *cmd,
2526  const char * const *argv);
2527 
2528 
2529 #define AP_NORESTART APR_OS_START_USEERR + 1
2530 
2541  const char *s,
2542  int start);
2543 
2551  const char *s);
2552 
2565 AP_DECLARE(int) ap_cstr_casecmp(const char *s1, const char *s2);
2566 
2579 AP_DECLARE(int) ap_cstr_casecmpn(const char *s1, const char *s2, apr_size_t n);
2580 
2584 #define AP_DIR_FLAG_NONE 0
2585 
2590 #define AP_DIR_FLAG_OPTIONAL 1
2591 
2596 #define AP_DIR_FLAG_RECURSIVE 2
2597 
2601 typedef struct ap_dir_match_t ap_dir_match_t;
2602 
2606 struct ap_dir_match_t {
2608  apr_pool_t *p;
2610  apr_pool_t *ptemp;
2612  const char *prefix;
2614  const char *(*cb)(ap_dir_match_t *w, const char *fname);
2616  void *ctx;
2618  int flags;
2620  unsigned int depth;
2621 };
2622 
2643 AP_DECLARE(const char *)ap_dir_nofnmatch(ap_dir_match_t *w, const char *fname)
2644  __attribute__((nonnull(1,2)));
2645 
2664 AP_DECLARE(const char *)ap_dir_fnmatch(ap_dir_match_t *w, const char *path,
2665  const char *fname) __attribute__((nonnull(1,3)));
2666 
2674 AP_DECLARE(int) ap_is_chunked(apr_pool_t *p, const char *line);
2675 
2676 #ifdef __cplusplus
2677 }
2678 #endif
2679 
2680 #endif /* !APACHE_HTTPD_H */
2681 
apr_uri_t parsed_uri
Definition: httpd.h:1068
apr_bucket_brigade * kept_body
Definition: httpd.h:927
void * sbh
Definition: httpd.h:1180
char * user
Definition: httpd.h:979
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:1357
void * context
Definition: httpd.h:1399
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:1342
const struct ap_logconf * log
Definition: httpd.h:1207
int idle
Definition: httpd.h:1414
#define ap_strrchr_c(s, c)
Definition: httpd.h:2413
struct ap_filter_conn_ctx * filter_conn_ctx
Definition: httpd.h:1240
APR Network library.
const char * ap_context_prefix(request_rec *r)
apr_pool_t * ptemp
Definition: httpd.h:2613
struct ap_errorlog_provider * errorlog_provider
Definition: httpd.h:1334
char * args
Definition: httpd.h:1000
char * local_host
Definition: httpd.h:1165
const char * content_type
Definition: httpd.h:966
char * ap_make_dirstr_parent(apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
apr_off_t remaining
Definition: httpd.h:933
Definition: apr_arch_thread_mutex.h:28
Definition: apr_arch_file_io.h:107
const char * log_id
Definition: httpd.h:1033
Definition: httpd.h:1265
Definition: apr_tables.h:62
const char * ap_size_list_item(const char **field, int *len)
request_rec * prev
Definition: httpd.h:830
#define ap_strrchr(s, c)
Definition: httpd.h:2411
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:900
apr_table_t * override_list
Definition: httpd.h:768
float loadavg15
Definition: httpd.h:1434
server_rec * server
Definition: httpd.h:825
struct apr_bucket_alloc_t * bucket_alloc
Definition: httpd.h:1182
int eos_sent
Definition: httpd.h:1013
apr_table_t * subprocess_env
Definition: httpd.h:957
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:1259
int taint
Definition: httpd.h:1097
A structure to be used for Per-vhost config.
Definition: httpd.h:1298
Definition: httpd.h:2609
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:1058
void ap_set_document_root(request_rec *r, const char *document_root)
const char * ap_get_server_description(void)
char * ap_get_local_host(apr_pool_t *p)
float loadavg5
Definition: httpd.h:1432
unsigned long access_count
Definition: httpd.h:1420
#define AP_DECLARE(x)
Definition: macros.h:1
apr_array_header_t * allowed_xmethods
Definition: httpd.h:898
apr_array_header_t * wild_names
Definition: httpd.h:1384
#define ap_strstr_c(s, c)
Definition: httpd.h:2417
apr_interval_time_t timeout
Definition: httpd.h:1373
char * ap_getword_conf_nc(apr_pool_t *p, char **line)
const char * method
Definition: httpd.h:874
void ap_no2slash_ex(char *name, int is_fs_path) AP_FN_ATTR_NONNULL_ALL
conn_rec * connection
Definition: httpd.h:823
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:1136
char * vlist_validator
Definition: httpd.h:976
request_rec * next
Definition: httpd.h:828
apr_thread_mutex_t * invoke_mtx
Definition: httpd.h:1064
const char * ap_get_server_banner(void)
char * server_hostname
Definition: httpd.h:1366
APR Hash Tables.
Apache Regex defines.
apr_thread_t * current_thread
Definition: httpd.h:1221
unsigned int clogging_input_filters
Definition: httpd.h:1189
struct ap_filter_t * proto_input_filters
Definition: httpd.h:1053
apr_file_t * error_log
Definition: httpd.h:1330
char * error_fname
Definition: httpd.h:1328
int double_reverse
Definition: httpd.h:1092
const char * hostname
Definition: httpd.h:857
char * ap_auth_type
Definition: httpd.h:981
struct ap_filter_t * proto_output_filters
Definition: httpd.h:1050
const char * short_name
Definition: httpd.h:809
int ap_cstr_casecmp(const char *s1, const char *s2)
void * suspended_baton
Definition: httpd.h:1234
This represents the result of calling htaccess; these are cached for each request.
Definition: httpd.h:760
#define ap_strchr_c(s, c)
Definition: httpd.h:2409
apr_table_t * trailers_out
Definition: httpd.h:1082
apr_sockaddr_t * host_addr
Definition: httpd.h:1304
int ap_is_url(const char *u)
apr_table_t * notes
Definition: httpd.h:959
apr_pool_t * pool
Definition: httpd.h:805
signed int double_reverse
Definition: httpd.h:1193
char * ap_escape_urlencoded(apr_pool_t *p, const char *s) AP_FN_ATTR_NONNULL_ALL
void * vhost_lookup_data
Definition: httpd.h:1138
char * ap_get_list_item(apr_pool_t *p, const char **field)
Definition: httpd.h:1122
const char * path
Definition: httpd.h:1387
apr_table_t * headers_out
Definition: httpd.h:952
A structure that represents one process.
Definition: httpd.h:803
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:1379
float loadavg
Definition: httpd.h:1430
const char * handler
Definition: httpd.h:968
server_addr_rec * next
Definition: httpd.h:1300
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:2619
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:1347
Structure to store things which are per connection.
Definition: httpd.h:1132
int keepalives
Definition: httpd.h:1203
char * server_admin
Definition: httpd.h:1364
apr_sockaddr_t * local_addr
Definition: httpd.h:1142
Definition: httpd.h:1258
char * ap_ht_time(apr_pool_t *p, apr_time_t t, const char *fmt, int gmt)
Definition: httpd.h:1261
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:1044
Symbol export macros and hook functions.
int proto_num
Definition: httpd.h:851
apr_array_header_t * method_list
Definition: httpd.h:668
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:872
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:1151
#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:1171
apr_time_t request_time
Definition: httpd.h:860
apr_int64_t apr_time_t
Definition: apr_time.h:45
conn_state_e
Definition: httpd.h:1255
const char * log_id
Definition: httpd.h:1212
conn_state_t * cs
Definition: httpd.h:1184
APR memory allocation.
Definition: httpd.h:1246
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
uint64_t apr_uint64_t
Definition: apr.h:390
struct ap_conf_vector_t * htaccess
Definition: httpd.h:770
const char * dir
Definition: httpd.h:762
unsigned int keep_alive_timeout_set
Definition: httpd.h:1404
const char * server_scheme
Definition: httpd.h:1359
int level
Definition: httpd.h:1314
int header_only
Definition: httpd.h:849
Definition: httpd.h:1260
char * the_request
Definition: httpd.h:840
A structure to store information for each virtual server.
Definition: httpd.h:1319
char * ap_getword_white(apr_pool_t *p, const char **line)
int no_cache
Definition: httpd.h:1056
char * uri
Definition: httpd.h:990
int ap_array_str_contains(const apr_array_header_t *array, const char *s)
int chunked
Definition: httpd.h:916
struct ap_conf_vector_t * request_config
Definition: httpd.h:1023
char * path_info
Definition: httpd.h:998
int ap_find_etag_strong(apr_pool_t *p, const char *line, const char *tok)
apr_table_t * trailers_in
Definition: httpd.h:1080
const struct htaccess_result * next
Definition: httpd.h:772
A structure to contain connection state information.
Definition: httpd.h:1277
int flags
Definition: httpd.h:2621
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:821
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:1396
process_rec * process
Definition: httpd.h:1321
apr_array_header_t * names
Definition: httpd.h:1382
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:1120
Definition: apr_arch_threadproc.h:42
long id
Definition: httpd.h:1168
apr_table_t * notes
Definition: httpd.h:1174
Definition: ap_regex.h:111
ap_method_mask_t allowed
Definition: httpd.h:896
A structure to hold server load params.
Definition: httpd.h:1412
APR-UTIL Buckets/Bucket Brigades.
int busy
Definition: httpd.h:1416
void ap_no2slash(char *name) AP_FN_ATTR_NONNULL_ALL
apr_port_t host_port
Definition: httpd.h:1306
apr_off_t sent_bodyct
Definition: httpd.h:903
conn_rec * master
Definition: httpd.h:1228
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)
ap_method_mask_t method_mask
Definition: httpd.h:666
char * remote_host
Definition: httpd.h:1155
char * ap_strcasestr(const char *s1, const char *s2) AP_FN_ATTR_NONNULL_ALL
server_rec * next
Definition: httpd.h:1323
#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:1087
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:834
struct ap_conf_vector_t * per_dir_config
Definition: httpd.h:1021
char * ap_escape_path_segment_buffer(char *c, const char *s) AP_FN_ATTR_NONNULL_ALL
apr_sockaddr_t * useragent_addr
Definition: httpd.h:1076
Definition: httpd.h:1262
apr_pool_t * p
Definition: httpd.h:2611
void ap_abort_on_oom(void) __attribute__((noreturn))
conn_state_e state
Definition: httpd.h:1279
server_addr_rec * addrs
Definition: httpd.h:1371
char is_virtual
Definition: httpd.h:1351
unsigned int depth
Definition: httpd.h:2623
Definition: httpd.h:1263
apr_uint64_t ap_method_mask_t
Definition: httpd.h:646
Definition: httpd.h:1257
void * errorlog_provider_handle
Definition: httpd.h:1336
Definition: apr_uri.h:85
int status
Definition: httpd.h:865
char * remote_logname
Definition: httpd.h:1159
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:923
Definition: httpd.h:1271
int keep_alive_max
Definition: httpd.h:1377
#define AP_FN_ATTR_ALLOC_SIZE(x)
Definition: ap_config.h:248
char * virthost
Definition: httpd.h:1302
char * canonical_filename
Definition: httpd.h:996
int async_filter
Definition: httpd.h:1243
APR Thread and Process Library.
struct ap_logconf log
Definition: httpd.h:1332
int used_path_info
Definition: httpd.h:1010
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:1247
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:766
apr_sockaddr_t * client_addr
Definition: httpd.h:1146
int ap_count_dirs(const char *path) AP_FN_ATTR_NONNULL_ALL
const char * prefix
Definition: httpd.h:2615
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:819
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:1281
Apache filter library.
const char * content_encoding
Definition: httpd.h:971
Definition: httpd.h:1269
int ap_rind(const char *str, char c)
int proxyreq
Definition: httpd.h:847
struct ap_filter_t * input_filters
Definition: httpd.h:1176
Structure for handling HTTP methods.
Definition: httpd.h:664
int limit_req_line
Definition: httpd.h:1392
const char * range
Definition: httpd.h:912
int ap_is_directory(apr_pool_t *p, const char *name)
apr_finfo_t finfo
Definition: httpd.h:1070
int limit_req_fieldsize
Definition: httpd.h:1394
A structure to hold various server loadavg.
Definition: httpd.h:1428
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:853
apr_pool_t * pconf
Definition: httpd.h:807
Definition: httpd.h:1270
apr_table_t * body_table
Definition: httpd.h:931
apr_pool_t * pool
Definition: httpd.h:1134
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:914
#define __attribute__(__x)
Definition: apr.h:63
int assbackwards
Definition: httpd.h:842
void ap_get_server_revision(ap_version_t *version)
apr_table_t * headers_in
Definition: httpd.h:950
const char * name
Definition: mod_dav.h:726
apr_table_t * err_headers_out
Definition: httpd.h:955
char * ap_field_noparam(apr_pool_t *p, const char *intype)
unsigned defn_line_number
Definition: httpd.h:1349
char * unparsed_uri
Definition: httpd.h:988
int read_body
Definition: httpd.h:921
apr_array_header_t * requests
Definition: httpd.h:1237
struct apr_pool_t apr_pool_t
Definition: apr_pools.h:60
int argc
Definition: httpd.h:813
Definition: httpd.h:2251
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:1028
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:1121
char * local_ip
Definition: httpd.h:1162
void * ctx
Definition: httpd.h:1231
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:2415
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:935
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:1268
void ap_str_toupper(char *s)
unsigned expecting_100
Definition: httpd.h:925
apr_time_t mtime
Definition: httpd.h:907
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:992
ap_conn_keepalive_e keepalive
Definition: httpd.h:1200
apr_array_header_t * slaves
Definition: httpd.h:1225
Definition: httpd.h:1309
void * ap_calloc(size_t nelem, size_t size) __attribute__((malloc)) AP_FN_ATTR_ALLOC_SIZE2(1
char * useragent_ip
Definition: httpd.h:1077
apr_off_t bytes_served
Definition: httpd.h:1418
#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:1046
void ap_set_context_info(request_rec *r, const char *prefix, const char *document_root)
unsigned aborted
Definition: httpd.h:1196
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:1375
Definition: httpd.h:1123
struct ap_conf_vector_t * lookup_defaults
Definition: httpd.h:1344
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:2407
signed char * module_levels
Definition: httpd.h:1311
const char * status_line
Definition: httpd.h:863
Definition: apr_network_io.h:266
int pathlen
Definition: httpd.h:1389
#define AP_FN_ATTR_ALLOC_SIZE2(x, y)
Definition: ap_config.h:249
const struct htaccess_result * htaccess
Definition: httpd.h:1041
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:905
apr_array_header_t * content_languages
Definition: httpd.h:973
const char * ap_get_server_built(void)
Definition: http_core.h:948
struct ap_filter_t * output_filters
Definition: httpd.h:1178
const char *const * argv
Definition: httpd.h:811