You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ji...@apache.org on 2005/11/08 14:15:28 UTC
svn commit: r331811 - in /httpd/httpd/branches/2.2.x: CHANGES
modules/proxy/proxy_util.c
Author: jim
Date: Tue Nov 8 05:15:17 2005
New Revision: 331811
URL: http://svn.apache.org/viewcvs?rev=331811&view=rev
Log:
Backport 330085
Fix worker and URL matching to be case sensitive
when needed.
Modified:
httpd/httpd/branches/2.2.x/CHANGES
httpd/httpd/branches/2.2.x/modules/proxy/proxy_util.c
Modified: httpd/httpd/branches/2.2.x/CHANGES
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/2.2.x/CHANGES?rev=331811&r1=331810&r2=331811&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.2.x/CHANGES [utf-8] Tue Nov 8 05:15:17 2005
@@ -1,6 +1,10 @@
-*- coding: utf-8 -*-
Changes with Apache 2.1.10
+ *) mod_proxy_balancer: When finding best worker, use case insensitive
+ match for scheme and host, but case sensitive for the rest of
+ the path. [Jim Jagielski, Ruediger Pluem]
+
*) Require use of APR >= 1.2.0 and APR-util >= 1.2.0 when configured
to use external copies of the libraries. [Joe Orton]
Modified: httpd/httpd/branches/2.2.x/modules/proxy/proxy_util.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/2.2.x/modules/proxy/proxy_util.c?rev=331811&r1=331810&r2=331811&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/modules/proxy/proxy_util.c (original)
+++ httpd/httpd/branches/2.2.x/modules/proxy/proxy_util.c Tue Nov 8 05:15:17 2005
@@ -1217,13 +1217,33 @@
int url_length;
int worker_name_length;
const char *c;
+ char *url_copy;
int i;
c = ap_strchr_c(url, ':');
if (c == NULL || c[1] != '/' || c[2] != '/' || c[3] == '\0')
return NULL;
+ url_copy = apr_pstrdup(p, url);
url_length = strlen(url);
+
+ /*
+ * We need to find the start of the path and
+ * therefore we know the length of the scheme://hostname/
+ * part to we can force-lowercase everything up to
+ * the start of the path.
+ */
+ c = ap_strchr_c(c+3, '/');
+ if (c) {
+ char *pathstart;
+ pathstart = url_copy + (c - url);
+ *pathstart = '\0';
+ ap_str_tolower(url_copy);
+ *pathstart = '/';
+ } else {
+ ap_str_tolower(url_copy);
+ }
+
worker = (proxy_worker *)conf->workers->elts;
/*
@@ -1233,7 +1253,7 @@
for (i = 0; i < conf->workers->nelts; i++) {
if ( ((worker_name_length = strlen(worker->name)) <= url_length)
&& (worker_name_length > max_match)
- && (strncasecmp(url, worker->name, worker_name_length) == 0) ) {
+ && (strncmp(url_copy, worker->name, worker_name_length) == 0) ) {
max_worker = worker;
max_match = worker_name_length;
}