25#define APR_WANT_MEMFUNC
26#define APR_WANT_STRFUNC
44#define PROXY_FUNCTION "SCGI"
45#define SCGI_MAGIC "SCGI"
46#define SCGI_PROTOCOL_VERSION "1"
49#define CONTENT_LENGTH "CONTENT_LENGTH"
50#define GATEWAY_INTERFACE "GATEWAY_INTERFACE"
52module AP_MODULE_DECLARE_DATA proxy_scgi_module;
145 "SOCKET_EX", 5, APR_BUCKET_DATA,
195 "error parsing URL %s: %s",
url,
err);
240 "sending data to %s:%u failed",
351 "receiving request body failed");
367 const char *location;
386 "error reading response headers from %s:%u",
414 "Found %s: %s - preparing subrequest.",
444 if (location && *location ==
'/') {
480 &proxy_scgi_module))) {
484 "Internal redirect to %s",
req_conf->location);
499 "File subrequest to %s",
req_conf->location);
515 "Subrequest to file '%s' not possible. "
516 "(rr->status=%d, rr->finfo.filetype=%d)",
548 "declining URL %s",
url);
572 "failed to make connection to backend: %s:%u",
610 conf->sendfile = add->sendfile ? add->sendfile:
base->sendfile;
611 conf->internal_redirect = add->internal_redirect
612 ? add->internal_redirect
613 :
base->internal_redirect;
658 "The name of the X-Sendfile pseudo response header or "
662 "The name of the pseudo response header or On or Off"),
ap hook functions and macros
const char apr_size_t len
APR-UTIL Buckets/Bucket Brigades.
Apache optional hook functions.
apr_size_t const unsigned char unsigned int unsigned int d
#define AP_INIT_TAKE1(directive, func, mconfig, where, help)
#define ap_get_module_config(v, m)
#define AP_DECLARE_MODULE(foo)
#define ap_set_module_config(v, m, val)
request_rec int int apr_table_t const char * path
apr_status_t ap_pass_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket)
#define ap_get_core_module_config(v)
#define APLOG_MODULE_INDEX
const unsigned char * buf
int ap_should_client_block(request_rec *r)
long ap_get_client_block(request_rec *r, char *buffer, apr_size_t bufsiz)
int ap_setup_client_block(request_rec *r, int read_policy)
void ap_internal_redirect_handler(const char *new_uri, request_rec *r)
int ap_run_sub_req(request_rec *r)
request_rec * ap_sub_req_lookup_file(const char *new_file, const request_rec *r, ap_filter_t *next_filter)
void ap_add_common_vars(request_rec *r)
int ap_scan_script_header_err_brigade_ex(request_rec *r, apr_bucket_brigade *bb, char *buffer, int module_index)
void ap_add_cgi_vars(request_rec *r)
#define AP_TRUST_CGILIKE_CL_ENVVAR
const char apr_port_t port
#define APR_BUCKET_INIT(e)
#define APR_BUCKET_INSERT_AFTER(a, b)
#define APR_BRIGADE_INSERT_TAIL(b, e)
#define APR_BUCKET_BUFF_SIZE
apr_bucket apr_bucket_brigade * a
const char apr_ssize_t int flags
#define APR_OPTIONAL_HOOK(ns, name, pfn, aszPre, aszSucc, nOrder)
#define HTTP_SERVICE_UNAVAILABLE
#define HTTP_INTERNAL_SERVER_ERROR
int ap_proxy_connect_backend(const char *proxy_function, proxy_conn_rec *conn, proxy_worker *worker, server_rec *s)
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)
#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)
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)
int ap_cstr_casecmpn(const char *s1, const char *s2, apr_size_t n)
const apr_array_header_t * list
void const char apr_status_t(* cleanup)(void *))
int strcasecmp(const char *a, const char *b)
char const *const char const *const ** env
apr_int32_t apr_int32_t apr_int32_t err
apr_int64_t apr_interval_time_t
#define REQUEST_CHUNKED_ERROR
Proxy Extension Module for Apache.
#define SCGI_PROTOCOL_VERSION
static const char * scgi_set_send_file(cmd_parms *cmd, void *mconfig, const char *arg)
static const apr_bucket_type_t bucket_type_socket_ex
static apr_status_t bucket_socket_ex_read(apr_bucket *a, const char **str, apr_size_t *len, apr_read_type_e block)
static int pass_response(request_rec *r, proxy_conn_rec *conn)
const char * scgi_sendfile_off
static apr_bucket * bucket_socket_ex_make(apr_bucket *b, socket_ex_data *data)
const char * scgi_internal_redirect_on
static const char * scgi_set_internal_redirect(cmd_parms *cmd, void *mconfig, const char *arg)
static apr_bucket * bucket_socket_ex_create(socket_ex_data *data, apr_bucket_alloc_t *list)
static void register_hooks(apr_pool_t *p)
static int send_headers(request_rec *r, proxy_conn_rec *conn)
static int scgi_canon(request_rec *r, char *url)
#define GATEWAY_INTERFACE
const char * scgi_internal_redirect_off
static void * create_scgi_config(apr_pool_t *p, char *dummy)
static int scgi_handler(request_rec *r, proxy_worker *worker, proxy_server_conf *conf, char *url, const char *proxyname, apr_port_t proxyport)
const char * scgi_sendfile_on
static int send_request_body(request_rec *r, proxy_conn_rec *conn)
static const command_rec scgi_cmds[]
static void * merge_scgi_config(apr_pool_t *p, void *base_, void *add_)
static int scgi_request_status(int *status, request_rec *r)
static int sendall(proxy_conn_rec *conn, const char *buf, apr_size_t length, request_rec *r)
Shared SCGI-related definitions.
apr_bucket_alloc_t * list
struct apr_bucket_alloc_t * bucket_alloc
Per-directory configuration.
A structure that represents the current request.
struct ap_filter_t * output_filters
apr_table_t * err_headers_out
struct ap_conf_vector_t * request_config
apr_table_t * subprocess_env
struct ap_conf_vector_t * per_dir_config
apr_table_t * headers_out
const char * internal_redirect
apr_status_t apr_socket_send(apr_socket_t *sock, const char *buf, apr_size_t *len)
apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len)
apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t)
apr_status_t apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t)