From: William A. Rowe Jr Date: Wed, 11 Aug 2004 22:27:34 +0000 (+0000) Subject: Remove proxy_conn struct and add it's params to proxy_conn_rec. X-Git-Tag: post_ajp_proxy~41 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3cc146e42b40d8495bc42fc1587cf46a6874e348;p=apache Remove proxy_conn struct and add it's params to proxy_conn_rec. Use named structure type declarations. Submitted by: mturk git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@104589 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index 73fce3c1b6..69940ec508 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -120,7 +120,7 @@ static const char *set_worker_param(proxy_worker *worker, return NULL; } -static const char *set_balancer_param(struct proxy_balancer *balancer, +static const char *set_balancer_param(proxy_balancer *balancer, const char *key, const char *val) { @@ -473,7 +473,7 @@ static int proxy_handler(request_rec *r) int direct_connect = 0; const char *str; long maxfwd; - struct proxy_balancer *balancer = NULL; + proxy_balancer *balancer = NULL; proxy_worker *worker = NULL; proxy_module_conf *mconf; @@ -654,7 +654,7 @@ static void * create_proxy_config(apr_pool_t *p, server_rec *s) ps->dirconn = apr_array_make(p, 10, sizeof(struct dirconn_entry)); ps->allowed_connect_ports = apr_array_make(p, 10, sizeof(int)); ps->workers = apr_array_make(p, 10, sizeof(proxy_worker)); - ps->balancers = apr_array_make(p, 10, sizeof(struct proxy_balancer)); + ps->balancers = apr_array_make(p, 10, sizeof(proxy_balancer)); ps->domain = NULL; ps->viaopt = via_off; /* initially backward compatible with 1.3.1 */ ps->viaopt_set = 0; /* 0 means default */ @@ -855,7 +855,7 @@ static const char * elts = (const apr_table_entry_t *)arr->elts; /* Distinguish the balancer from woker */ if (strncasecmp(r, "balancer:", 9) == 0) { - struct proxy_balancer *balancer = ap_proxy_get_balancer(cmd->pool, conf, r); + proxy_balancer *balancer = ap_proxy_get_balancer(cmd->pool, conf, r); if (!balancer) { const char *err = ap_proxy_add_balancer(&balancer, cmd->pool, @@ -1203,7 +1203,7 @@ static const char *add_member(cmd_parms *cmd, void *dummy, const char *arg) server_rec *s = cmd->server; proxy_server_conf *conf = ap_get_module_config(s->module_config, &proxy_module); - struct proxy_balancer *balancer; + proxy_balancer *balancer; proxy_worker *worker; char *path = cmd->path; char *name = NULL; @@ -1279,7 +1279,7 @@ static const char * server_rec *s = cmd->server; proxy_server_conf *conf = ap_get_module_config(s->module_config, &proxy_module); - struct proxy_balancer *balancer; + proxy_balancer *balancer; const char *name, *sticky; if (r != NULL && cmd->path == NULL ) { @@ -1540,14 +1540,14 @@ APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(proxy, PROXY, int, canon_handler, url),DECLINED) APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(proxy, PROXY, int, pre_request, ( proxy_worker **worker, - struct proxy_balancer **balancer, + proxy_balancer **balancer, request_rec *r, proxy_server_conf *conf, char **url),(worker,balancer, r,conf,url),DECLINED) APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(proxy, PROXY, int, post_request, (proxy_worker *worker, - struct proxy_balancer *balancer, + proxy_balancer *balancer, request_rec *r, proxy_server_conf *conf),(worker, balancer,r,conf),DECLINED) diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h index 2328efdee0..a401bf6be4 100644 --- a/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h @@ -173,6 +173,11 @@ typedef struct { } proxy_server_conf; +typedef struct proxy_balancer proxy_balancer; +typedef struct proxy_worker proxy_worker; +typedef struct proxy_conn proxy_conn; +typedef struct proxy_conn_pool proxy_conn_pool; + typedef struct { const char *p; /* The path */ int p_is_fnmatch; /* Is this path an fnmatch candidate? */ @@ -180,10 +185,16 @@ typedef struct { } proxy_dir_conf; typedef struct { - conn_rec *connection; - char *hostname; - apr_port_t port; - int is_ssl; + conn_rec *connection; + const char *hostname; + apr_port_t port; + int is_ssl; + apr_pool_t *pool; /* Subpool used for creating socket */ + apr_socket_t *sock; /* Connection socket */ + apr_uint32_t flags; /* Conection flags */ + int close; /* Close 'this' connection */ + proxy_worker *worker; /* Connection pool this connection belogns to */ + void *data; /* per scheme connection data */ } proxy_conn_rec; typedef struct { @@ -191,26 +202,18 @@ typedef struct { int content_length; /* length of the content */ } proxy_completion; -/* Physical connection to the backend server */ -typedef struct { - apr_pool_t *pool; /* Subpool used for creating socket */ - apr_socket_t *sock; - int flags; /* 0: newly created 1: initialized -1: in error */ - int close; /* Close 'this' connection */ -} proxy_conn; - /* Connection pool */ -typedef struct { +struct proxy_conn_pool { apr_pool_t *pool; /* The pool used in constructor and destructor calls */ apr_sockaddr_t *addr; /* Preparsed remote address info */ #if APR_HAS_THREADS apr_reslist_t *res; /* Connection resource list */ #endif - proxy_conn *conn; /* Single connection for prefork mpm's */ -} proxy_conn_pool; + proxy_conn_rec *conn; /* Single connection for prefork mpm's */ +}; /* Worker configuration */ -typedef struct { +struct proxy_worker { int status; apr_time_t error_time; /* time of the last error */ apr_interval_time_t retry; /* retry interval */ @@ -229,10 +232,11 @@ typedef struct { proxy_conn_pool *cp; /* Connection pool to use */ void *opaque; /* per scheme worker data */ -} proxy_worker; +}; /* Runtime worker status informations. Shared in scoreboard */ typedef struct { + proxy_balancer *b; /* balancer containing this worker */ proxy_worker *w; double lbfactor; /* dynamic lbfactor */ double lbsatus; /* Current lbstatus */ @@ -352,9 +356,9 @@ PROXY_DECLARE(int) ap_proxy_ssl_disable(conn_rec *c); PROXY_DECLARE(proxy_worker *) ap_proxy_get_worker(apr_pool_t *p, proxy_server_conf *conf, const char *url); PROXY_DECLARE(const char *) ap_proxy_add_worker(proxy_worker **worker, apr_pool_t *p, proxy_server_conf *conf, const char *url); PROXY_DECLARE(struct proxy_balancer *) ap_proxy_get_balancer(apr_pool_t *p, proxy_server_conf *conf, const char *url); -PROXY_DECLARE(const char *) ap_proxy_add_balancer(struct proxy_balancer **balancer, apr_pool_t *p, proxy_server_conf *conf, const char *url); -PROXY_DECLARE(void) ap_proxy_add_worker_to_balancer(struct proxy_balancer *balancer, proxy_worker *worker); -PROXY_DECLARE(int) ap_proxy_pre_request(proxy_worker **worker, struct proxy_balancer **balancer, request_rec *r, proxy_server_conf *conf, char **url); +PROXY_DECLARE(const char *) ap_proxy_add_balancer(proxy_balancer **balancer, apr_pool_t *p, proxy_server_conf *conf, const char *url); +PROXY_DECLARE(void) ap_proxy_add_worker_to_balancer(proxy_balancer *balancer, proxy_worker *worker); +PROXY_DECLARE(int) ap_proxy_pre_request(proxy_worker **worker, proxy_balancer **balancer, request_rec *r, proxy_server_conf *conf, char **url); PROXY_DECLARE(apr_status_t) ap_proxy_determine_connection(apr_pool_t *p, request_rec *r, proxy_server_conf *conf, proxy_module_conf *mconf, apr_pool_t *ppool, apr_uri_t *uri, char **url, const char *proxyname, apr_port_t proxyport, char *server_portstr, int server_portstr_size); diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c index c966190a86..8a24147f4a 100644 --- a/modules/proxy/proxy_util.c +++ b/modules/proxy/proxy_util.c @@ -988,11 +988,11 @@ PROXY_DECLARE(void) ap_proxy_table_unmerge(apr_pool_t *p, apr_table_t *t, char * apr_table_add(t, key, value + offset); } -PROXY_DECLARE(struct proxy_balancer *) ap_proxy_get_balancer(apr_pool_t *p, - proxy_server_conf *conf, - const char *url) +PROXY_DECLARE(proxy_balancer *) ap_proxy_get_balancer(apr_pool_t *p, + proxy_server_conf *conf, + const char *url) { - struct proxy_balancer *balancer; + proxy_balancer *balancer; char *c, *uri = apr_pstrdup(p, url); int i; @@ -1002,7 +1002,7 @@ PROXY_DECLARE(struct proxy_balancer *) ap_proxy_get_balancer(apr_pool_t *p, /* remove path from uri */ if ((c = strchr(c + 3, '/'))) *c = '\0'; - balancer = (struct proxy_balancer *)conf->balancers->elts; + balancer = (proxy_balancer *)conf->balancers->elts; for (i = 0; i < conf->balancers->nelts; i++) { if (strcasecmp(balancer->name, uri) == 0) return balancer; @@ -1011,7 +1011,7 @@ PROXY_DECLARE(struct proxy_balancer *) ap_proxy_get_balancer(apr_pool_t *p, return NULL; } -PROXY_DECLARE(const char *) ap_proxy_add_balancer(struct proxy_balancer **balancer, +PROXY_DECLARE(const char *) ap_proxy_add_balancer(proxy_balancer **balancer, apr_pool_t *p, proxy_server_conf *conf, const char *url) @@ -1155,7 +1155,7 @@ PROXY_DECLARE(const char *) ap_proxy_add_worker(proxy_worker **worker, } PROXY_DECLARE(void) -ap_proxy_add_worker_to_balancer(struct proxy_balancer *balancer, proxy_worker *worker) +ap_proxy_add_worker_to_balancer(proxy_balancer *balancer, proxy_worker *worker) { int i; double median, ffactor = 0.0; @@ -1202,7 +1202,7 @@ ap_proxy_add_worker_to_balancer(struct proxy_balancer *balancer, proxy_worker *w } PROXY_DECLARE(int) ap_proxy_pre_request(proxy_worker **worker, - struct proxy_balancer **balancer, + proxy_balancer **balancer, request_rec *r, proxy_server_conf *conf, char **url) { @@ -1226,7 +1226,7 @@ PROXY_DECLARE(int) ap_proxy_pre_request(proxy_worker **worker, } PROXY_DECLARE(int) ap_proxy_post_request(proxy_worker *worker, - struct proxy_balancer *balancer, + proxy_balancer *balancer, request_rec *r, proxy_server_conf *conf) { @@ -1315,7 +1315,7 @@ PROXY_DECLARE(int) ap_proxy_connect_to_backend(apr_socket_t **newsock, static apr_status_t proxy_conn_cleanup(void *theconn) { - proxy_conn *conn = (proxy_conn *)theconn; + proxy_conn_rec *conn = (proxy_conn_rec *)theconn; /* Close the socket */ if (conn->sock) apr_socket_close(conn->sock); @@ -1328,7 +1328,7 @@ static apr_status_t connection_constructor(void **resource, void *params, apr_pool_t *pool) { apr_pool_t *ctx; - proxy_conn *conn; + proxy_conn_rec *conn; server_rec *s = (server_rec *)params; /* Create the subpool for each connection @@ -1336,7 +1336,7 @@ static apr_status_t connection_constructor(void **resource, void *params, * when disconnecting from backend. */ apr_pool_create(&ctx, pool); - conn = apr_pcalloc(ctx, sizeof(proxy_conn)); + conn = apr_pcalloc(ctx, sizeof(proxy_conn_rec)); conn->pool = ctx; *resource = conn; @@ -1354,7 +1354,7 @@ static apr_status_t connection_constructor(void **resource, void *params, static apr_status_t connection_destructor(void *resource, void *params, apr_pool_t *pool) { - proxy_conn *conn = (proxy_conn *)resource; + proxy_conn_rec *conn = (proxy_conn_rec *)resource; server_rec *s = (server_rec *)params; apr_pool_destroy(conn->pool); @@ -1378,7 +1378,7 @@ static apr_status_t init_conn_worker(proxy_worker *worker, server_rec *s) else #endif { - worker->cp->conn = apr_pcalloc(worker->cp->pool, sizeof(proxy_conn)); + worker->cp->conn = apr_pcalloc(worker->cp->pool, sizeof(proxy_conn_rec)); /* register the pool cleanup. * The cleanup is registered on conn_pool pool, so that * the same mechanism (apr_pool_cleanup) can be used