diff --git a/modules/proxy/mod_proxy_balancer.c b/modules/proxy/mod_proxy_balancer.c index cebfd59199..a0711350ad 100644 --- a/modules/proxy/mod_proxy_balancer.c +++ b/modules/proxy/mod_proxy_balancer.c @@ -359,6 +359,11 @@ static proxy_worker *find_best_bytraffic(proxy_balancer *balancer, return mycandidate; } +static proxy_balancer_method _default_lbmethod = { + "byrequests", + find_best_byrequests +}; + static proxy_worker *find_best_worker(proxy_balancer *balancer, request_rec *r) { @@ -367,13 +372,6 @@ static proxy_worker *find_best_worker(proxy_balancer *balancer, if (PROXY_THREAD_LOCK(balancer) != APR_SUCCESS) return NULL; - if (!(*balancer->lbmethod->finder)) { - /* XXX: UGLY HACK!!! - * Where is the finder function setup? - */ - balancer->lbmethod->finder = find_best_byrequests; - } - candidate = (*balancer->lbmethod->finder)(balancer, r); /* @@ -879,6 +877,9 @@ static void child_init(apr_pool_t *p, server_rec *s) balancer = (proxy_balancer *)conf->balancers->elts; for (i = 0; i < conf->balancers->nelts; i++) { init_balancer_members(conf, s, balancer); + if (!balancer->lbmethod->finder) { + balancer->lbmethod->finder = _default_lbmethod; + } balancer++; } s = s->next;