From: Ruediger Pluem Date: Wed, 5 Oct 2005 07:59:36 +0000 (+0000) Subject: * Fix PR36507 (mod_proxy_balancer does not handle sticky sessions with X-Git-Tag: 2.3.0~2913 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fc078f733654c58437b75d14363c080571073f13;p=apache * Fix PR36507 (mod_proxy_balancer does not handle sticky sessions with tomcat correctly). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@295013 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index bd68509e1a..4ae8a9aca3 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.3.0 [Remove entries to the current 2.0 and 2.2 section below, when backported] + *) mod_proxy_balancer: mod_proxy_balancer does not handle sticky sessions + with tomcat correctly. PR36507. [Ruediger Pluem] + *) mod_proxy: Run the request_status hook also if there are no free workers or all workers are in error state. [Ruediger Pluem, Brian Akins ] diff --git a/modules/proxy/mod_proxy_balancer.c b/modules/proxy/mod_proxy_balancer.c index d45fab8d1a..3cff08ebe4 100644 --- a/modules/proxy/mod_proxy_balancer.c +++ b/modules/proxy/mod_proxy_balancer.c @@ -193,7 +193,18 @@ static proxy_worker *find_session_route(proxy_balancer *balancer, *route = get_path_param(r->pool, *url, balancer->sticky); if (!*route) *route = get_cookie_param(r, balancer->sticky); - if (*route) { + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, + "proxy: BALANCER: Found value %s for " + "stickysession %s", *route, balancer->sticky); + /* + * If we found a value for sticksession, find the first '.' within. + * Everything after '.' (if present) is our route. + */ + if ((*route) && ((*route = strchr(*route, '.')) != NULL )) + (*route)++; + if ((*route) && (**route)) { + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, + "proxy: BALANCER: Found route %s", *route); /* We have a route in path or in cookie * Find the worker that has this route defined. */