From: Jean-Frederic Clere Date: Tue, 12 May 2009 15:10:56 +0000 (+0000) Subject: Arrange the proxy_balancer_method: X-Git-Tag: 2.3.3~627 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a970341df7b5271a673f0258c29d2e91eac61362;p=thirdparty%2Fapache%2Fhttpd.git Arrange the proxy_balancer_method: - Put context back after the finder(). - Use server_rec as second parameter for reset() and age(). - Add the call for reset(). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@773929 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/balancers/mod_lbmethod_bybusyness.c b/modules/proxy/balancers/mod_lbmethod_bybusyness.c index 1861084a5c4..7df73abb9c0 100644 --- a/modules/proxy/balancers/mod_lbmethod_bybusyness.c +++ b/modules/proxy/balancers/mod_lbmethod_bybusyness.c @@ -105,11 +105,11 @@ static proxy_worker *find_best_bybusyness(proxy_balancer *balancer, } -static apr_status_t reset(proxy_balancer *balancer, request_rec *r) { +static apr_status_t reset(proxy_balancer *balancer, server_rec *r) { return APR_SUCCESS; } -static apr_status_t age(proxy_balancer *balancer, request_rec *r) { +static apr_status_t age(proxy_balancer *balancer, server_rec *r) { return APR_SUCCESS; } @@ -117,9 +117,9 @@ static const proxy_balancer_method bybusyness = { "bybusyness", &find_best_bybusyness, + NULL, &reset, - &age, - NULL + &age }; diff --git a/modules/proxy/balancers/mod_lbmethod_byrequests.c b/modules/proxy/balancers/mod_lbmethod_byrequests.c index a895d443710..7bcbd838c38 100644 --- a/modules/proxy/balancers/mod_lbmethod_byrequests.c +++ b/modules/proxy/balancers/mod_lbmethod_byrequests.c @@ -132,11 +132,11 @@ static proxy_worker *find_best_byrequests(proxy_balancer *balancer, return mycandidate; } -static apr_status_t reset(proxy_balancer *balancer, request_rec *r) { +static apr_status_t reset(proxy_balancer *balancer, server_rec *r) { return APR_SUCCESS; } -static apr_status_t age(proxy_balancer *balancer, request_rec *r) { +static apr_status_t age(proxy_balancer *balancer, server_rec *r) { return APR_SUCCESS; } @@ -150,9 +150,9 @@ static const proxy_balancer_method byrequests = { "byrequests", &find_best_byrequests, + NULL, &reset, - &age, - NULL + &age }; static void register_hook(apr_pool_t *p) diff --git a/modules/proxy/balancers/mod_lbmethod_bytraffic.c b/modules/proxy/balancers/mod_lbmethod_bytraffic.c index 2c231d0e33f..7876702c069 100644 --- a/modules/proxy/balancers/mod_lbmethod_bytraffic.c +++ b/modules/proxy/balancers/mod_lbmethod_bytraffic.c @@ -105,11 +105,11 @@ static proxy_worker *find_best_bytraffic(proxy_balancer *balancer, return mycandidate; } -static apr_status_t reset(proxy_balancer *balancer, request_rec *r) { +static apr_status_t reset(proxy_balancer *balancer, server_rec *r) { return APR_SUCCESS; } -static apr_status_t age(proxy_balancer *balancer, request_rec *r) { +static apr_status_t age(proxy_balancer *balancer, server_rec *r) { return APR_SUCCESS; } @@ -117,9 +117,9 @@ static const proxy_balancer_method bytraffic = { "bytraffic", &find_best_bytraffic, + NULL, &reset, - &age, - NULL + &age }; static void register_hook(apr_pool_t *p) diff --git a/modules/proxy/balancers/mod_lbmethod_heartbeat.c b/modules/proxy/balancers/mod_lbmethod_heartbeat.c index 914c367bb21..9c57bd024ea 100644 --- a/modules/proxy/balancers/mod_lbmethod_heartbeat.c +++ b/modules/proxy/balancers/mod_lbmethod_heartbeat.c @@ -299,11 +299,11 @@ static proxy_worker *find_best_hb(proxy_balancer *balancer, return mycandidate; } -static apr_status_t reset(proxy_balancer *balancer, request_rec *r) { +static apr_status_t reset(proxy_balancer *balancer, server_rec *r) { return APR_SUCCESS; } -static apr_status_t age(proxy_balancer *balancer, request_rec *r) { +static apr_status_t age(proxy_balancer *balancer, server_rec *r) { return APR_SUCCESS; } @@ -311,9 +311,9 @@ static const proxy_balancer_method heartbeat = { "heartbeat", &find_best_hb, + NULL, &reset, - &age, - NULL + &age }; static void register_hooks(apr_pool_t *p) diff --git a/modules/proxy/examples/mod_lbmethod_rr.c b/modules/proxy/examples/mod_lbmethod_rr.c index 775f2c45e6c..b991790c9a8 100644 --- a/modules/proxy/examples/mod_lbmethod_rr.c +++ b/modules/proxy/examples/mod_lbmethod_rr.c @@ -95,11 +95,21 @@ static proxy_worker *find_best_roundrobin(proxy_balancer *balancer, return mycandidate; } +static apr_status_t reset(proxy_balancer *balancer, server_rec *r) { + return APR_SUCCESS; +} + +static apr_status_t age(proxy_balancer *balancer, server_rec *r) { + return APR_SUCCESS; +} + static const proxy_balancer_method roundrobin = { "roundrobin", &find_best_roundrobin, - NULL + NULL, + &reset, + &age }; diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h index 9963594178e..78d653e1079 100644 --- a/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h @@ -390,9 +390,9 @@ struct proxy_balancer_method { const char *name; /* name of the load balancer method*/ proxy_worker *(*finder)(proxy_balancer *balancer, request_rec *r); - apr_status_t (*reset)(proxy_balancer *balancer, request_rec *r); - apr_status_t (*age)(proxy_balancer *balancer, request_rec *r); void *context; /* general purpose storage */ + apr_status_t (*reset)(proxy_balancer *balancer, server_rec *r); + apr_status_t (*age)(proxy_balancer *balancer, server_rec *r); }; #if APR_HAS_THREADS diff --git a/modules/proxy/mod_proxy_balancer.c b/modules/proxy/mod_proxy_balancer.c index f819d8944ea..5fdee9d2c4d 100644 --- a/modules/proxy/mod_proxy_balancer.c +++ b/modules/proxy/mod_proxy_balancer.c @@ -941,6 +941,9 @@ static void child_init(apr_pool_t *p, server_rec *s) /* Initialize shared scoreboard data */ balancer = (proxy_balancer *)conf->balancers->elts; for (i = 0; i < conf->balancers->nelts; i++) { + proxy_balancer_method *lbmethod = balancer->lbmethod; + if (balancer->lbmethod!=NULL && balancer->lbmethod->reset != NULL) + balancer->lbmethod->reset(balancer, s); init_balancer_members(conf, s, balancer); balancer++; }