diff --git a/modules/proxy/balancers/mod_lbmethod_bybusyness.c b/modules/proxy/balancers/mod_lbmethod_bybusyness.c index 0e5ebc87a1..1861084a5c 100644 --- a/modules/proxy/balancers/mod_lbmethod_bybusyness.c +++ b/modules/proxy/balancers/mod_lbmethod_bybusyness.c @@ -27,7 +27,7 @@ static proxy_worker *find_best_bybusyness(proxy_balancer *balancer, { int i; - proxy_worker *worker; + proxy_worker **worker; proxy_worker *mycandidate = NULL; int cur_lbset = 0; int max_lbset = 0; @@ -46,17 +46,17 @@ static proxy_worker *find_best_bybusyness(proxy_balancer *balancer, checking_standby = checked_standby = 0; while (!mycandidate && !checked_standby) { - worker = (proxy_worker *)balancer->workers->elts; + worker = (proxy_worker **)balancer->workers->elts; for (i = 0; i < balancer->workers->nelts; i++, worker++) { if (!checking_standby) { /* first time through */ - if (worker->s->lbset > max_lbset) - max_lbset = worker->s->lbset; + if ((*worker)->s->lbset > max_lbset) + max_lbset = (*worker)->s->lbset; } - if (worker->s->lbset != cur_lbset) + if ((*worker)->s->lbset != cur_lbset) continue; - if ( (checking_standby ? !PROXY_WORKER_IS_STANDBY(worker) : PROXY_WORKER_IS_STANDBY(worker)) ) + if ( (checking_standby ? !PROXY_WORKER_IS_STANDBY(*worker) : PROXY_WORKER_IS_STANDBY(*worker)) ) continue; /* If the worker is in error state run @@ -65,21 +65,21 @@ static proxy_worker *find_best_bybusyness(proxy_balancer *balancer, * The worker might still be unusable, but we try * anyway. */ - if (!PROXY_WORKER_IS_USABLE(worker)) - ap_proxy_retry_worker("BALANCER", worker, r->server); + if (!PROXY_WORKER_IS_USABLE(*worker)) + ap_proxy_retry_worker("BALANCER", *worker, r->server); /* Take into calculation only the workers that are * not in error state or not disabled. */ - if (PROXY_WORKER_IS_USABLE(worker)) { + if (PROXY_WORKER_IS_USABLE(*worker)) { - worker->s->lbstatus += worker->s->lbfactor; - total_factor += worker->s->lbfactor; + (*worker)->s->lbstatus += (*worker)->s->lbfactor; + total_factor += (*worker)->s->lbfactor; if (!mycandidate - || worker->s->busy < mycandidate->s->busy - || (worker->s->busy == mycandidate->s->busy && worker->s->lbstatus > mycandidate->s->lbstatus)) - mycandidate = worker; + || (*worker)->s->busy < mycandidate->s->busy + || ((*worker)->s->busy == mycandidate->s->busy && (*worker)->s->lbstatus > mycandidate->s->lbstatus)) + mycandidate = *worker; } diff --git a/modules/proxy/balancers/mod_lbmethod_byrequests.c b/modules/proxy/balancers/mod_lbmethod_byrequests.c index fc15db6c08..a895d44371 100644 --- a/modules/proxy/balancers/mod_lbmethod_byrequests.c +++ b/modules/proxy/balancers/mod_lbmethod_byrequests.c @@ -73,7 +73,7 @@ static proxy_worker *find_best_byrequests(proxy_balancer *balancer, { int i; int total_factor = 0; - proxy_worker *worker; + proxy_worker **worker; proxy_worker *mycandidate = NULL; int cur_lbset = 0; int max_lbset = 0; @@ -88,15 +88,15 @@ static proxy_worker *find_best_byrequests(proxy_balancer *balancer, do { checking_standby = checked_standby = 0; while (!mycandidate && !checked_standby) { - worker = (proxy_worker *)balancer->workers->elts; + worker = (proxy_worker **)balancer->workers->elts; for (i = 0; i < balancer->workers->nelts; i++, worker++) { if (!checking_standby) { /* first time through */ - if (worker->s->lbset > max_lbset) - max_lbset = worker->s->lbset; + if ((*worker)->s->lbset > max_lbset) + max_lbset = (*worker)->s->lbset; } - if (worker->s->lbset != cur_lbset) + if ((*worker)->s->lbset != cur_lbset) continue; - if ( (checking_standby ? !PROXY_WORKER_IS_STANDBY(worker) : PROXY_WORKER_IS_STANDBY(worker)) ) + if ( (checking_standby ? !PROXY_WORKER_IS_STANDBY(*worker) : PROXY_WORKER_IS_STANDBY(*worker)) ) continue; /* If the worker is in error state run * retry on that worker. It will be marked as @@ -104,16 +104,16 @@ static proxy_worker *find_best_byrequests(proxy_balancer *balancer, * The worker might still be unusable, but we try * anyway. */ - if (!PROXY_WORKER_IS_USABLE(worker)) - ap_proxy_retry_worker("BALANCER", worker, r->server); + if (!PROXY_WORKER_IS_USABLE(*worker)) + ap_proxy_retry_worker("BALANCER", *worker, r->server); /* Take into calculation only the workers that are * not in error state or not disabled. */ - if (PROXY_WORKER_IS_USABLE(worker)) { - worker->s->lbstatus += worker->s->lbfactor; - total_factor += worker->s->lbfactor; - if (!mycandidate || worker->s->lbstatus > mycandidate->s->lbstatus) - mycandidate = worker; + if (PROXY_WORKER_IS_USABLE(*worker)) { + (*worker)->s->lbstatus += (*worker)->s->lbfactor; + total_factor += (*worker)->s->lbfactor; + if (!mycandidate || (*worker)->s->lbstatus > mycandidate->s->lbstatus) + mycandidate = *worker; } } checked_standby = checking_standby++; diff --git a/modules/proxy/balancers/mod_lbmethod_bytraffic.c b/modules/proxy/balancers/mod_lbmethod_bytraffic.c index e2b339a8e8..2c231d0e33 100644 --- a/modules/proxy/balancers/mod_lbmethod_bytraffic.c +++ b/modules/proxy/balancers/mod_lbmethod_bytraffic.c @@ -45,7 +45,7 @@ static proxy_worker *find_best_bytraffic(proxy_balancer *balancer, int i; apr_off_t mytraffic = 0; apr_off_t curmin = 0; - proxy_worker *worker; + proxy_worker **worker; proxy_worker *mycandidate = NULL; int cur_lbset = 0; int max_lbset = 0; @@ -60,15 +60,15 @@ static proxy_worker *find_best_bytraffic(proxy_balancer *balancer, do { checking_standby = checked_standby = 0; while (!mycandidate && !checked_standby) { - worker = (proxy_worker *)balancer->workers->elts; + worker = (proxy_worker **)balancer->workers->elts; for (i = 0; i < balancer->workers->nelts; i++, worker++) { if (!checking_standby) { /* first time through */ - if (worker->s->lbset > max_lbset) - max_lbset = worker->s->lbset; + if ((*worker)->s->lbset > max_lbset) + max_lbset = (*worker)->s->lbset; } - if (worker->s->lbset != cur_lbset) + if ((*worker)->s->lbset != cur_lbset) continue; - if ( (checking_standby ? !PROXY_WORKER_IS_STANDBY(worker) : PROXY_WORKER_IS_STANDBY(worker)) ) + if ( (checking_standby ? !PROXY_WORKER_IS_STANDBY(*worker) : PROXY_WORKER_IS_STANDBY(*worker)) ) continue; /* If the worker is in error state run * retry on that worker. It will be marked as @@ -76,16 +76,16 @@ static proxy_worker *find_best_bytraffic(proxy_balancer *balancer, * The worker might still be unusable, but we try * anyway. */ - if (!PROXY_WORKER_IS_USABLE(worker)) - ap_proxy_retry_worker("BALANCER", worker, r->server); + if (!PROXY_WORKER_IS_USABLE(*worker)) + ap_proxy_retry_worker("BALANCER", *worker, r->server); /* Take into calculation only the workers that are * not in error state or not disabled. */ - if (PROXY_WORKER_IS_USABLE(worker)) { - mytraffic = (worker->s->transferred/worker->s->lbfactor) + - (worker->s->read/worker->s->lbfactor); + if (PROXY_WORKER_IS_USABLE(*worker)) { + mytraffic = ((*worker)->s->transferred/(*worker)->s->lbfactor) + + ((*worker)->s->read/(*worker)->s->lbfactor); if (!mycandidate || mytraffic < curmin) { - mycandidate = worker; + mycandidate = *worker; curmin = mytraffic; } } diff --git a/modules/proxy/balancers/mod_lbmethod_heartbeat.c b/modules/proxy/balancers/mod_lbmethod_heartbeat.c index 094e7e53d9..914c367bb2 100644 --- a/modules/proxy/balancers/mod_lbmethod_heartbeat.c +++ b/modules/proxy/balancers/mod_lbmethod_heartbeat.c @@ -223,7 +223,7 @@ static proxy_worker *find_best_hb(proxy_balancer *balancer, apr_status_t rv; int i; apr_uint32_t openslots = 0; - proxy_worker *worker; + proxy_worker **worker; hb_server_t *server; apr_array_header_t *up_servers; proxy_worker *mycandidate = NULL; @@ -251,19 +251,19 @@ static proxy_worker *find_best_hb(proxy_balancer *balancer, up_servers = apr_array_make(tpool, apr_hash_count(servers), sizeof(hb_server_t *)); for (i = 0; i < balancer->workers->nelts; i++) { - worker = &APR_ARRAY_IDX(balancer->workers, i, proxy_worker); - server = apr_hash_get(servers, worker->hostname, APR_HASH_KEY_STRING); + worker = &APR_ARRAY_IDX(balancer->workers, i, proxy_worker *); + server = apr_hash_get(servers, (*worker)->hostname, APR_HASH_KEY_STRING); if (!server) { continue; } - if (!PROXY_WORKER_IS_USABLE(worker)) { - ap_proxy_retry_worker("BALANCER", worker, r->server); + if (!PROXY_WORKER_IS_USABLE(*worker)) { + ap_proxy_retry_worker("BALANCER", *worker, r->server); } - if (PROXY_WORKER_IS_USABLE(worker)) { - server->worker = worker; + if (PROXY_WORKER_IS_USABLE(*worker)) { + server->worker = *worker; if (server->seen < LBM_HEARTBEAT_MAX_LASTSEEN) { openslots += server->ready; APR_ARRAY_PUSH(up_servers, hb_server_t *) = server; diff --git a/modules/proxy/examples/mod_lbmethod_rr.c b/modules/proxy/examples/mod_lbmethod_rr.c index b7f4f0f0ad..775f2c45e6 100644 --- a/modules/proxy/examples/mod_lbmethod_rr.c +++ b/modules/proxy/examples/mod_lbmethod_rr.c @@ -43,7 +43,7 @@ static proxy_worker *find_best_roundrobin(proxy_balancer *balancer, request_rec *r) { int i; - proxy_worker *worker; + proxy_worker **worker; proxy_worker *mycandidate = NULL; int checking_standby; int checked_standby; @@ -70,17 +70,17 @@ static proxy_worker *find_best_roundrobin(proxy_balancer *balancer, checking_standby = checked_standby = 0; while (!mycandidate && !checked_standby) { - worker = (proxy_worker *)balancer->workers->elts; + worker = (proxy_worker **)balancer->workers->elts; for (i = 0; i < balancer->workers->nelts; i++, worker++) { if (i < ctx->index) continue; - if ( (checking_standby ? !PROXY_WORKER_IS_STANDBY(worker) : PROXY_WORKER_IS_STANDBY(worker)) ) + if ( (checking_standby ? !PROXY_WORKER_IS_STANDBY(*worker) : PROXY_WORKER_IS_STANDBY(*worker)) ) continue; - if (!PROXY_WORKER_IS_USABLE(worker)) - ap_proxy_retry_worker("BALANCER", worker, r->server); - if (PROXY_WORKER_IS_USABLE(worker)) { - mycandidate = worker; + if (!PROXY_WORKER_IS_USABLE(*worker)) + ap_proxy_retry_worker("BALANCER", *worker, r->server); + if (PROXY_WORKER_IS_USABLE(*worker)) { + mycandidate = *worker; break; } } diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index 4fbc2dfb5c..9fab090f83 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -1591,13 +1591,6 @@ static const char * psf->req = flag; psf->req_set = 1; - - if (flag && !psf->forward) { - psf->forward = ap_proxy_create_worker(parms->pool); - psf->forward->name = "proxy:forward"; - psf->forward->hostname = "*"; - psf->forward->scheme = "*"; - } return NULL; } @@ -1821,7 +1814,7 @@ static const char *add_member(cmd_parms *cmd, void *dummy, const char *arg) return apr_pstrcat(cmd->temp_pool, "BalancerMember ", err, NULL); } /* Add the worker to the load balancer */ - ap_proxy_add_worker_to_balancer(cmd->pool, balancer, worker); + ap_proxy_add_worker_to_balancer(cmd->pool, balancer, &worker); return NULL; } @@ -2203,7 +2196,7 @@ static int proxy_status_hook(request_rec *r, int flags) proxy_server_conf *conf = (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module); proxy_balancer *balancer = NULL; - proxy_worker *worker = NULL; + proxy_worker **worker = NULL; if (flags & AP_STATUS_SHORT || conf->balancers->nelts == 0 || conf->proxy_status == status_off) @@ -2239,27 +2232,27 @@ static int proxy_status_hook(request_rec *r, int flags) "