1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-07 04:02:58 +03:00

* Set the new environment variable BALANCER_ROUTE_CHANGED if a worker with a

route different from the one supplied by the client had been chosen or if
  the client supplied no routing information for a balancer with sticky
  sessions.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@446929 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Ruediger Pluem
2006-09-16 19:49:41 +00:00
parent f188bb425e
commit 483ddc121a
2 changed files with 26 additions and 0 deletions

View File

@@ -2,6 +2,11 @@
Changes with Apache 2.3.0
[Remove entries to the current 2.0 and 2.2 section below, when backported]
*) mod_proxy_balancer: Set the new environment variable BALANCER_ROUTE_CHANGED
if a worker with a route different from the one supplied by the client
had been chosen or if the client supplied no routing information for
a balancer with sticky sessions. [Ruediger Pluem]
*) mod_proxy: Print the correct error message for erroneous configured
ProxyPass directives. PR 40439. [serai lans-tv.com]

View File

@@ -267,6 +267,16 @@ static proxy_worker *find_session_route(proxy_balancer *balancer,
* Find the worker that has this route defined.
*/
worker = find_route_worker(balancer, *route, r);
if (worker && strcmp(*route, worker->s->route)) {
/*
* Notice that the route of the worker chosen is different from
* the route supplied by the client.
*/
apr_table_setn(r->subprocess_env, "BALANCER_ROUTE_CHANGED", "1");
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"proxy: BALANCER: Route changed from %s to %s",
*route, worker->s->route);
}
return worker;
}
else
@@ -424,6 +434,17 @@ static int proxy_balancer_pre_request(proxy_worker **worker,
return HTTP_SERVICE_UNAVAILABLE;
}
if ((*balancer)->sticky && runtime) {
/*
* This balancer has sticky sessions and the client either has not
* supplied any routing information or all workers for this route
* including possible redirect and hotstandby workers are in error
* state, but we have found another working worker for this
* balancer where we can send the request. Thus notice that we have
* changed the route to the backend.
*/
apr_table_setn(r->subprocess_env, "BALANCER_ROUTE_CHANGED", "1");
}
*worker = runtime;
}