diff options
Diffstat (limited to '')
-rw-r--r-- | include/http_core.h | 61 |
1 files changed, 53 insertions, 8 deletions
diff --git a/include/http_core.h b/include/http_core.h index 35df5dc..948034f 100644 --- a/include/http_core.h +++ b/include/http_core.h @@ -31,6 +31,7 @@ #include "apr_optional.h" #include "util_filter.h" #include "ap_expr.h" +#include "apr_poll.h" #include "apr_tables.h" #include "http_config.h" @@ -160,7 +161,7 @@ AP_DECLARE(const char *) ap_document_root(request_rec *r); /** * Lookup the remote user agent's DNS name or IP address - * @ingroup get_remote_hostname + * @ingroup get_remote_host * @param req The current request * @param type The type of lookup to perform. One of: * <pre> @@ -254,6 +255,13 @@ AP_DECLARE(const char *) ap_get_server_name_for_url(request_rec *r); AP_DECLARE(apr_port_t) ap_get_server_port(const request_rec *r); /** + * Get the size of read buffers + * @param r The current request + * @return The read buffers size + */ +AP_DECLARE(apr_size_t) ap_get_read_buf_size(const request_rec *r); + +/** * Return the limit on bytes in request msg body * @param r The current request * @return the maximum number of bytes in the request msg body @@ -482,12 +490,13 @@ typedef unsigned int overrides_t; */ 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_ALL (ETAG_MTIME | ETAG_INODE | ETAG_SIZE) +#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_DIGEST (1 << 4) +#define ETAG_ALL (ETAG_MTIME | ETAG_INODE | ETAG_SIZE) /* This is the default value used */ #define ETAG_BACKWARD (ETAG_MTIME | ETAG_SIZE) @@ -672,6 +681,8 @@ typedef struct { /** Table of rules for building CGI variables, NULL if none configured */ apr_hash_t *cgi_var_rules; + + apr_size_t read_buf_size; } core_dir_config; /* macro to implement off by default behaviour */ @@ -740,7 +751,11 @@ typedef struct { #define AP_HTTP_METHODS_LENIENT 1 #define AP_HTTP_METHODS_REGISTERED 2 char http_methods; - + unsigned int merge_slashes; + + apr_size_t flush_max_threshold; + apr_int32_t flush_max_pipelined; + unsigned int strict_host_check; } core_server_config; /* for AddOutputFiltersByType in core.c */ @@ -769,6 +784,11 @@ AP_DECLARE(void) ap_set_server_protocol(server_rec* s, const char* proto); typedef struct core_output_filter_ctx core_output_filter_ctx_t; typedef struct core_filter_ctx core_ctx_t; +struct core_filter_ctx { + apr_bucket_brigade *b; + apr_bucket_brigade *tmpbb; +}; + typedef struct core_net_rec { /** Connection to the client */ apr_socket_t *client_socket; @@ -1041,6 +1061,31 @@ AP_DECLARE(int) ap_state_query(int query_code); /** only dump some parts of the config */ #define AP_SQ_RM_CONFIG_DUMP 4 +/** Get a apr_pollfd_t populated with descriptor and descriptor type + * and the timeout to use for it. + * @return APR_ENOTIMPL if not supported for a connection. + */ +AP_DECLARE_HOOK(apr_status_t, get_pollfd_from_conn, + (conn_rec *c, struct apr_pollfd_t *pfd, + apr_interval_time_t *ptimeout)) + +/** + * Pass in a `struct apr_pollfd_t*` and get `desc_type` and `desc` + * populated with a suitable value for polling connection input. + * For primary connection (c->master == NULL), this will be the connection + * socket. For secondary connections this may differ or not be available + * at all. + * Note that APR_NO_DESC may be set to indicate that the connection + * input is already closed. + * + * @param pfd the pollfd to set the descriptor in + * @param ptimeout != NULL to retrieve the timeout in effect + * @return ARP_SUCCESS when the information was assigned. + */ +AP_CORE_DECLARE(apr_status_t) ap_get_pollfd_from_conn(conn_rec *c, + struct apr_pollfd_t *pfd, + apr_interval_time_t *ptimeout); + #ifdef __cplusplus } #endif |