22module AP_MODULE_DECLARE_DATA proxy_ajp_module;
89 "To be forwarded path contains control "
90 "characters or spaces");
95 "To be forwarded query string contains control "
96 "characters or spaces");
115#define METHOD_NON_IDEMPOTENT 0
116#define METHOD_IDEMPOTENT 1
117#define METHOD_IDEMPOTENT_WITH_ARGS 2
186 char *
url,
char *server_portstr)
206 int headers_sent = 0;
219 if (
psf->io_buffer_size_set)
239 "request failed to %pI (%s:%hu)",
265 "ajp_alloc_data_msg failed");
276 "request is chunked");
280 "%s Transfer-Encoding is not supported",
289 if (content_length < 0) {
301 "ap_get_brigade failed");
322 "apr_brigade_flatten");
331 ajp_msg_log(
r, msg,
"First ajp_send_data_msg: ajp_ilink_send packet dump");
337 "send failed to %pI (%s:%hu)",
348 else if (content_length > 0) {
350 "read zero bytes, expecting"
377 "read response failed from %pI (%s:%hu)",
424 "APR_BUCKET_IS_EOS");
432 "ap_get_brigade failed");
448 "apr_brigade_flatten failed");
458 ajp_msg_log(
r, msg,
"ajp_send_data_msg after CMD_AJP13_GET_BODY_CHUNK: ajp_ilink_send packet dump");
461 "ajp_send_data_msg failed");
472 "ap_proxy_ajp_request error read after end");
483 "Backend sent headers twice.");
493 const char *
wa =
"WWW-Authenticate";
498 "ap_proxy_ajp_request: origin server "
499 "sent 401 without WWW-Authenticate header");
522 "Ignoring flush message "
523 "received before headers");
560 "error processing body.%s",
562 " Client aborted connection." :
"");
589 "error processing end");
608 "client connection aborted");
633 "ajp_read_header failed");
648 "Processing of request failed backend: %i, client: %i",
659 "Processing of request didn't terminate cleanly");
674 "got response from %pI (%s:%hu)",
697 "dialog to %pI (%s:%hu) failed",
731 "dialog with client %pI failed",
774 char server_portstr[32];
777 const char *scheme =
"AJP";
813 sizeof(server_portstr));
824 "failed to make connection to backend: %s",
843 "cping/cpong failed to %pI (%s:%hu)",
const char apr_size_t len
apr_size_t const unsigned char unsigned int unsigned int d
apr_status_t ajp_send_header(apr_socket_t *sock, request_rec *r, apr_size_t buffsize, apr_uri_t *uri, const char *secret)
apr_status_t ajp_parse_reuse(request_rec *r, ajp_msg_t *msg, apr_byte_t *reuse)
int ajp_parse_type(request_rec *r, ajp_msg_t *msg)
apr_status_t ajp_parse_data(request_rec *r, ajp_msg_t *msg, apr_uint16_t *len, char **ptr)
apr_status_t ajp_alloc_data_msg(apr_pool_t *pool, char **ptr, apr_size_t *len, ajp_msg_t **msg)
apr_status_t ajp_msg_log(request_rec *r, ajp_msg_t *msg, char *err)
apr_status_t ajp_send_data_msg(apr_socket_t *sock, ajp_msg_t *msg, apr_size_t len)
apr_status_t ajp_msg_reset(ajp_msg_t *msg)
apr_status_t ajp_parse_header(request_rec *r, proxy_dir_conf *conf, ajp_msg_t *msg)
apr_status_t ajp_read_header(apr_socket_t *sock, request_rec *r, apr_size_t buffsize, ajp_msg_t **msg)
#define AJP_MAX_BUFFER_SZ
#define CMD_AJP13_GET_BODY_CHUNK
#define CMD_AJP13_SEND_HEADERS
#define CMD_AJP13_END_RESPONSE
#define AJP_MSG_BUFFER_SZ
#define CMD_AJP13_SEND_BODY_CHUNK
#define ap_get_module_config(v, m)
#define AP_DECLARE_MODULE(foo)
request_rec int int apr_table_t const char * path
apr_status_t ap_pass_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket)
apr_status_t ap_get_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
#define ap_get_core_module_config(v)
const unsigned char * buf
int ap_map_http_request_error(apr_status_t rv, int status)
const char apr_port_t port
#define APR_STATUS_IS_TIMEUP(s)
#define APR_BRIGADE_LAST(b)
#define APR_BRIGADE_INSERT_TAIL(b, e)
#define APR_BRIGADE_EMPTY(b)
#define APR_BUCKET_IS_EOS(e)
const char apr_ssize_t int flags
#define APR_REGISTER_OPTIONAL_FN(name)
#define HTTP_SERVICE_UNAVAILABLE
#define HTTP_REQUEST_TIME_OUT
#define HTTP_INTERNAL_SERVER_ERROR
#define HTTP_GATEWAY_TIME_OUT
#define HTTP_NOT_IMPLEMENTED
#define PROXY_CHECK_CONN_EMPTY
int ap_proxy_connect_backend(const char *proxy_function, proxy_conn_rec *conn, proxy_worker *worker, server_rec *s)
int ap_proxy_should_override(proxy_dir_conf *conf, int code)
char * ap_proxy_canon_netloc(apr_pool_t *p, char **const urlp, char **userp, char **passwordp, char **hostp, apr_port_t *port)
int ap_proxy_release_connection(const char *proxy_function, proxy_conn_rec *conn, server_rec *s)
int ap_proxy_acquire_connection(const char *proxy_function, proxy_conn_rec **conn, proxy_worker *worker, server_rec *s)
char * ap_proxy_canonenc_ex(apr_pool_t *p, const char *x, int len, enum enctype t, int flags, int proxyreq)
void ap_proxy_backend_broke(request_rec *r, apr_bucket_brigade *brigade)
apr_status_t ap_proxy_check_connection(const char *scheme, proxy_conn_rec *conn, server_rec *server, unsigned max_blank_lines, int flags)
#define PROXY_CANONENC_NOENCODEDSLASHENCODING
void proxy_hook_canon_handler(proxy_HOOK_canon_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
apr_port_t ap_proxy_port_of_scheme(const char *scheme)
int ap_proxy_determine_connection(apr_pool_t *p, request_rec *r, proxy_server_conf *conf, proxy_worker *worker, proxy_conn_rec *conn, apr_uri_t *uri, char **url, const char *proxyname, apr_port_t proxyport, char *server_portstr, int server_portstr_size)
void proxy_hook_scheme_handler(proxy_HOOK_scheme_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define STANDARD20_MODULE_STUFF
int ap_cstr_casecmp(const char *s1, const char *s2)
#define ap_strchr_c(s, c)
const char * ap_scan_vchar_obstext(const char *ptr)
int ap_cstr_casecmpn(const char *s1, const char *s2, apr_size_t n)
int ap_parse_strict_length(apr_off_t *len, const char *str)
apr_array_header_t ** result
#define APR_ALIGN(size, boundary)
#define apr_pcalloc(p, size)
apr_int32_t apr_int32_t apr_int32_t err
static unsigned char * secret
Proxy Extension Module for Apache.
#define METHOD_IDEMPOTENT
static int proxy_ajp_handler(request_rec *r, proxy_worker *worker, proxy_server_conf *conf, char *url, const char *proxyname, apr_port_t proxyport)
#define METHOD_NON_IDEMPOTENT
static int proxy_ajp_canon(request_rec *r, char *url)
static int is_idempotent(request_rec *r)
#define METHOD_IDEMPOTENT_WITH_ARGS
static void ap_proxy_http_register_hook(apr_pool_t *p)
static apr_off_t get_content_length(request_rec *r)
static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, proxy_conn_rec *conn, conn_rec *origin, proxy_dir_conf *conf, apr_uri_t *uri, char *url, char *server_portstr)
static apr_OFN_ajp_handle_cping_cpong_t * ajp_handle_cping_cpong
static sed_label_t * search(sed_commands_t *commands)
Structure to store things which are per connection.
apr_sockaddr_t * client_addr
struct apr_bucket_alloc_t * bucket_alloc
Per-directory configuration.
unsigned int error_override
unsigned int ping_timeout_set
enum proxy_worker_shared::@35 flush_packets
apr_interval_time_t ping_timeout
A structure that represents the current request.
struct ap_filter_t * output_filters
apr_table_t * err_headers_out
struct ap_filter_t * input_filters
apr_table_t * subprocess_env
struct ap_conf_vector_t * per_dir_config
apr_table_t * headers_out
struct ap_conf_vector_t * module_config