📄 http_core.h
字号:
*/ void **notes; /* There is a script processor installed on the output filter chain, * so it needs the default_handler to deliver a (script) file into * the chain so it can process it. Normally, default_handler only * serves files on a GET request (assuming the file is actual content), * since other methods are not content-retrieval. This flag overrides * that behavior, stating that the "content" is actually a script and * won't actually be delivered as the response for the non-GET method. */ int deliver_script; /* Custom response strings registered via ap_custom_response(), * or NULL; check per-dir config if nothing found here */ char **response_code_strings; /* from ap_custom_response(), not from * ErrorDocument */} core_request_config;/* Standard entries that are guaranteed to be accessible via * ap_get_request_note() for each request (additional entries * can be added with ap_register_request_note()) */#define AP_NOTE_DIRECTORY_WALK 0#define AP_NOTE_LOCATION_WALK 1#define AP_NOTE_FILE_WALK 2#define AP_NUM_STD_NOTES 3/** * Reserve an element in the core_request_config->notes array * for some application-specific data * @return An integer key that can be passed to ap_get_request_note() * during request processing to access this element for the * current request. */AP_DECLARE(apr_size_t) ap_register_request_note(void);/** * Retrieve a pointer to an element in the core_request_config->notes array * @param r The request * @param note_num A key for the element: either a value obtained from * ap_register_request_note() or one of the predefined AP_NOTE_* * values. * @return NULL if the note_num is invalid, otherwise a pointer to the * requested note element. * @remark At the start of a request, each note element is NULL. The * handle provided by ap_get_request_note() is a pointer-to-pointer * so that the caller can point the element to some app-specific * data structure. The caller should guarantee that any such * structure will last as long as the request itself. */AP_DECLARE(void **) ap_get_request_note(request_rec *r, apr_size_t note_num);/* Per-directory configuration */typedef unsigned char allow_options_t;typedef unsigned char overrides_t;/* * Bits of info that go into making an ETag for a file * document. Why a long? Because char historically * proved too short for Options, and int can be different * sizes on different platforms. */typedef unsigned long etag_components_t;#define ETAG_UNSET 0#define ETAG_NONE (1 << 0)#define ETAG_MTIME (1 << 1)#define ETAG_INODE (1 << 2)#define ETAG_SIZE (1 << 3)#define ETAG_BACKWARD (ETAG_MTIME | ETAG_INODE | ETAG_SIZE)#define ETAG_ALL (ETAG_MTIME | ETAG_INODE | ETAG_SIZE)typedef enum { srv_sig_unset, srv_sig_off, srv_sig_on, srv_sig_withmail} server_signature_e;typedef struct { /* path of the directory/regex/etc. see also d_is_fnmatch/absolute below */ char *d; /* the number of slashes in d */ unsigned d_components; /* If (opts & OPT_UNSET) then no absolute assignment to options has * been made. * invariant: (opts_add & opts_remove) == 0 * Which said another way means that the last relative (options + or -) * assignment made to each bit is recorded in exactly one of opts_add * or opts_remove. */ allow_options_t opts; allow_options_t opts_add; allow_options_t opts_remove; overrides_t override; /* MIME typing --- the core doesn't do anything at all with this, * but it does know what to slap on a request for a document which * goes untyped by other mechanisms before it slips out the door... */ char *ap_default_type; /* Authentication stuff. Groan... */ int *satisfy; /* for every method one */ char *ap_auth_type; char *ap_auth_name; apr_array_header_t *ap_requires; /* Custom response config. These can contain text or a URL to redirect to. * if response_code_strings is NULL then there are none in the config, * if it's not null then it's allocated to sizeof(char*)*RESPONSE_CODES. * This lets us do quick merges in merge_core_dir_configs(). */ char **response_code_strings; /* from ErrorDocument, not from * ap_custom_response() */ /* Hostname resolution etc */#define HOSTNAME_LOOKUP_OFF 0#define HOSTNAME_LOOKUP_ON 1#define HOSTNAME_LOOKUP_DOUBLE 2#define HOSTNAME_LOOKUP_UNSET 3 unsigned int hostname_lookups : 4; signed int do_rfc1413 : 2; /* See if client is advertising a username? */ signed int content_md5 : 2; /* calculate Content-MD5? */#define USE_CANONICAL_NAME_OFF (0)#define USE_CANONICAL_NAME_ON (1)#define USE_CANONICAL_NAME_DNS (2)#define USE_CANONICAL_NAME_UNSET (3) unsigned use_canonical_name : 2; /* since is_fnmatch(conf->d) was being called so frequently in * directory_walk() and its relatives, this field was created and * is set to the result of that call. */ unsigned d_is_fnmatch : 1; /* should we force a charset on any outgoing parameterless content-type? * if so, which charset? */#define ADD_DEFAULT_CHARSET_OFF (0)#define ADD_DEFAULT_CHARSET_ON (1)#define ADD_DEFAULT_CHARSET_UNSET (2) unsigned add_default_charset : 2; const char *add_default_charset_name; /* System Resource Control */#ifdef RLIMIT_CPU struct rlimit *limit_cpu;#endif#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS) struct rlimit *limit_mem;#endif#ifdef RLIMIT_NPROC struct rlimit *limit_nproc;#endif apr_off_t limit_req_body; /* limit on bytes in request msg body */ long limit_xml_body; /* limit on bytes in XML request msg body */ /* logging options */ server_signature_e server_signature; int loglevel; /* Access control */ apr_array_header_t *sec_file; regex_t *r; const char *mime_type; /* forced with ForceType */ const char *handler; /* forced with SetHandler */ const char *output_filters; /* forced with SetOutputFilters */ const char *input_filters; /* forced with SetInputFilters */ int accept_path_info; /* forced with AcceptPathInfo */ apr_hash_t *ct_output_filters; /* added with AddOutputFilterByType */ /* * What attributes/data should be included in ETag generation? */ etag_components_t etag_bits; etag_components_t etag_add; etag_components_t etag_remove; /* * Run-time performance tuning */#define ENABLE_MMAP_OFF (0)#define ENABLE_MMAP_ON (1)#define ENABLE_MMAP_UNSET (2) unsigned int enable_mmap : 2; /* whether files in this dir can be mmap'ed */#define ENABLE_SENDFILE_OFF (0)#define ENABLE_SENDFILE_ON (1)#define ENABLE_SENDFILE_UNSET (2) unsigned int enable_sendfile : 2; /* files in this dir can be mmap'ed */ unsigned int allow_encoded_slashes : 1; /* URLs may contain %2f w/o being * pitched indiscriminately */} core_dir_config;/* Per-server core configuration */typedef struct { #ifdef GPROF char *gprof_dir;#endif /* Name translations --- we want the core to be able to do *something* * so it's at least a minimally functional web server on its own (and * can be tested that way). But let's keep it to the bare minimum: */ const char *ap_document_root; /* Access control */ char *access_name; apr_array_header_t *sec_dir; apr_array_header_t *sec_url; /* recursion backstopper */ int redirect_limit; /* maximum number of internal redirects */ int subreq_limit; /* maximum nesting level of subrequests */} core_server_config;/* for AddOutputFiltersByType in core.c */void ap_add_output_filters_by_type(request_rec *r);/* for http_config.c */void ap_core_reorder_directories(apr_pool_t *, server_rec *);/* for mod_perl */AP_CORE_DECLARE(void) ap_add_per_dir_conf(server_rec *s, void *dir_config);AP_CORE_DECLARE(void) ap_add_per_url_conf(server_rec *s, void *url_config);AP_CORE_DECLARE(void) ap_add_file_conf(core_dir_config *conf, void *url_config);AP_CORE_DECLARE_NONSTD(const char *) ap_limit_section(cmd_parms *cmd, void *dummy, const char *arg);#endif/* ---------------------------------------------------------------------- * * Runtime status/management */typedef enum { ap_mgmt_type_string, ap_mgmt_type_long, ap_mgmt_type_hash} ap_mgmt_type_e;typedef union { const char *s_value; long i_value; apr_hash_t *h_value;} ap_mgmt_value;typedef struct { const char *description; const char *name; ap_mgmt_type_e vtype; ap_mgmt_value v;} ap_mgmt_item_t;/* Handles for core filters */extern AP_DECLARE_DATA ap_filter_rec_t *ap_subreq_core_filter_handle;extern AP_DECLARE_DATA ap_filter_rec_t *ap_core_output_filter_handle;extern AP_DECLARE_DATA ap_filter_rec_t *ap_content_length_filter_handle;extern AP_DECLARE_DATA ap_filter_rec_t *ap_net_time_filter_handle;extern AP_DECLARE_DATA ap_filter_rec_t *ap_core_input_filter_handle;/** * This hook provdes a way for modules to provide metrics/statistics about * their operational status. * * @param p A pool to use to create entries in the hash table * @param val The name of the parameter(s) that is wanted. This is * tree-structured would be in the form ('*' is all the tree, * 'module.*' all of the module , 'module.foo.*', or * 'module.foo.bar' ) * @param ht The hash table to store the results. Keys are item names, and * the values point to ap_mgmt_item_t structures. * @ingroup hooks */AP_DECLARE_HOOK(int, get_mgmt_items, (apr_pool_t *p, const char * val, apr_hash_t *ht))/* ---------------------------------------------------------------------- *//* ---------------------------------------------------------------------- * * I/O logging with mod_logio */APR_DECLARE_OPTIONAL_FN(void, ap_logio_add_bytes_out, (conn_rec *c, apr_off_t bytes));/* ---------------------------------------------------------------------- */#ifdef __cplusplus}#endif#endif /* !APACHE_HTTP_CORE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -