35 lines
1.2 KiB
Diff
35 lines
1.2 KiB
Diff
# ./pullrev.sh 1926107
|
|
http://svn.apache.org/viewvc?view=revision&revision=1926107
|
|
|
|
diff --git a/modules/proxy/mod_proxy_balancer.c b/modules/proxy/mod_proxy_balancer.c
|
|
index 140366e6d52..daec21ad6c3 100644
|
|
--- a/modules/proxy/mod_proxy_balancer.c
|
|
+++ b/modules/proxy/mod_proxy_balancer.c
|
|
@@ -276,11 +276,23 @@ static proxy_worker *find_session_route(proxy_balancer *balancer,
|
|
char **url)
|
|
{
|
|
proxy_worker *worker = NULL;
|
|
+ char *url_with_qs;
|
|
|
|
if (!*balancer->s->sticky)
|
|
return NULL;
|
|
+ /*
|
|
+ * The route might be contained in the query string and *url is not
|
|
+ * supposed to contain the query string. Hence add it temporarily if
|
|
+ * present.
|
|
+ */
|
|
+ if (r->args) {
|
|
+ url_with_qs = apr_pstrcat(r->pool, *url, "?", r->args, NULL);
|
|
+ }
|
|
+ else {
|
|
+ url_with_qs = *url;
|
|
+ }
|
|
/* Try to find the sticky route inside url */
|
|
- *route = get_path_param(r->pool, *url, balancer->s->sticky_path, balancer->s->scolonsep);
|
|
+ *route = get_path_param(r->pool, url_with_qs, balancer->s->sticky_path, balancer->s->scolonsep);
|
|
if (*route) {
|
|
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(01159)
|
|
"Found value %s for stickysession %s",
|
|
|
|
|