⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http_core.h

📁 Apache HTTP Server 是一个功能强大的灵活的与HTTP/1.1相兼容的web服务器.这里给出的是Apache HTTP服务器的源码。
💻 H
📖 第 1 页 / 共 2 页
字号:
     */    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 + -