From: Jim Jagielski Date: Fri, 4 Feb 2011 20:34:47 +0000 (+0000) Subject: Lock around the time when we're mucking w/ balancers... X-Git-Tag: 2.3.11~101 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2752756dd8b1c10a698230411837953febc2e23c;p=thirdparty%2Fapache%2Fhttpd.git Lock around the time when we're mucking w/ balancers... git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1067276 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/mod_proxy_balancer.c b/modules/proxy/mod_proxy_balancer.c index c5f79418762..1865a871951 100644 --- a/modules/proxy/mod_proxy_balancer.c +++ b/modules/proxy/mod_proxy_balancer.c @@ -876,8 +876,20 @@ static int balancer_handler(request_rec *r) params = apr_table_make(r->pool, 10); balancer = (proxy_balancer *)conf->balancers->elts; - for (i = 0; i < conf->balancers->nelts; i++, balancer++) + for (i = 0; i < conf->balancers->nelts; i++, balancer++) { + apr_status_t rv; + if ((rv = PROXY_GLOBAL_LOCK(balancer)) != APR_SUCCESS) { + ap_log_error(APLOG_MARK, APLOG_ERR, rv, r->server, + "proxy: BALANCER: (%s). Lock failed for balancer_handler", + balancer->name); + } ap_proxy_update_members(balancer, r->server, conf); + if ((rv = PROXY_GLOBAL_UNLOCK(balancer)) != APR_SUCCESS) { + ap_log_error(APLOG_MARK, APLOG_ERR, rv, r->server, + "proxy: BALANCER: (%s). Unlock failed for balancer_handler", + balancer->name); + } + } if (r->args) { char *args = apr_pstrdup(r->pool, r->args);