Loading CHANGES +4 −0 Changes for CHANGES: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,10 @@ Changes with Apache 2.3.0 [Remove entries to the current 2.0 and 2.2 section below, when backported] *) mod_proxy: Ensure that at least scheme://hostname[:port] matches between worker and URL when searching for the best fitting worker for a given URL. PR 40910. [Ruediger Pluem] *) mod_cache: Remove expired content from cache that cannot be revalidated. PR 30370. [Ruediger Pluem] Loading modules/proxy/proxy_util.c +7 −1 Changes for modules/proxy/proxy_util.c: 7 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -1324,6 +1324,7 @@ PROXY_DECLARE(proxy_worker *) ap_proxy_get_worker(apr_pool_t *p, proxy_worker *max_worker = NULL; int max_match = 0; int url_length; int min_match; int worker_name_length; const char *c; char *url_copy; Loading @@ -1349,20 +1350,25 @@ PROXY_DECLARE(proxy_worker *) ap_proxy_get_worker(apr_pool_t *p, pathstart = url_copy + (c - url); *pathstart = '\0'; ap_str_tolower(url_copy); min_match = strlen(url_copy); *pathstart = '/'; } else { ap_str_tolower(url_copy); min_match = strlen(url_copy); } worker = (proxy_worker *)conf->workers->elts; /* * Do a "longest match" on the worker name to find the worker that * fits best to the URL. * fits best to the URL, but keep in mind that we must have at least * a minimum matching of length min_match such that * scheme://hostname[:port] matches between worker and url. */ for (i = 0; i < conf->workers->nelts; i++) { if ( ((worker_name_length = strlen(worker->name)) <= url_length) && (worker_name_length >= min_match) && (worker_name_length > max_match) && (strncmp(url_copy, worker->name, worker_name_length) == 0) ) { max_worker = worker; Loading Loading
CHANGES +4 −0 Changes for CHANGES: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,10 @@ Changes with Apache 2.3.0 [Remove entries to the current 2.0 and 2.2 section below, when backported] *) mod_proxy: Ensure that at least scheme://hostname[:port] matches between worker and URL when searching for the best fitting worker for a given URL. PR 40910. [Ruediger Pluem] *) mod_cache: Remove expired content from cache that cannot be revalidated. PR 30370. [Ruediger Pluem] Loading
modules/proxy/proxy_util.c +7 −1 Changes for modules/proxy/proxy_util.c: 7 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -1324,6 +1324,7 @@ PROXY_DECLARE(proxy_worker *) ap_proxy_get_worker(apr_pool_t *p, proxy_worker *max_worker = NULL; int max_match = 0; int url_length; int min_match; int worker_name_length; const char *c; char *url_copy; Loading @@ -1349,20 +1350,25 @@ PROXY_DECLARE(proxy_worker *) ap_proxy_get_worker(apr_pool_t *p, pathstart = url_copy + (c - url); *pathstart = '\0'; ap_str_tolower(url_copy); min_match = strlen(url_copy); *pathstart = '/'; } else { ap_str_tolower(url_copy); min_match = strlen(url_copy); } worker = (proxy_worker *)conf->workers->elts; /* * Do a "longest match" on the worker name to find the worker that * fits best to the URL. * fits best to the URL, but keep in mind that we must have at least * a minimum matching of length min_match such that * scheme://hostname[:port] matches between worker and url. */ for (i = 0; i < conf->workers->nelts; i++) { if ( ((worker_name_length = strlen(worker->name)) <= url_length) && (worker_name_length >= min_match) && (worker_name_length > max_match) && (strncmp(url_copy, worker->name, worker_name_length) == 0) ) { max_worker = worker; Loading