Against 2.2.14 source, in short, add an array of URL's for which the
preserveproxyhost is required, bit of code for the config parameter, and a
small change to check if the URL matches one of the list.




ht01b07:~/apacheConfig/tarball/httpd-2.2.14/modules/proxy # diff
mod_proxy.h mod_proxy.h.real
177,180d176
<
<     /* Array of URL's for which the hostname needs to be preserved when
proxied  */
<
<     apr_array_header_t *preserve_host_urls;
ht01b07:~/apacheConfig/tarball/httpd-2.2.14/modules/proxy #


ht01b07:~/apacheConfig/tarball/httpd-2.2.14/modules/proxy # diff
mod_proxy.c mod_proxy.c.real
1071d1070
<     ps->preserve_host_urls = apr_array_make(p, 10, sizeof(char*));
1114d1112
<     ps->preserve_host_urls = apr_array_append(p,
base->preserve_host_urls, overrides->preserve_host_urls);
1615,1629d1612
< set_preserve_host_url(cmd_parms *parms, void *dummy, const char *arg)
< {
<     proxy_server_conf *psf =
<     ap_get_module_config(parms->server->module_config, &proxy_module);
<
<     apr_array_header_t *preserve_host_urls =
<         psf->preserve_host_urls;
<
<     *(const char**)apr_array_push(preserve_host_urls) =
<         apr_pstrdup(parms->pool, arg);
<
<     return NULL;
< }
<
< static const char *
2119,2120d2101
<     AP_INIT_TAKE1("ProxyPreserveHostURL", set_preserve_host_url, NULL,
RSRC_CONF,
<      "Set a base URL where the host name needs to be preserved when
proxying"),
ht01b07:~/apacheConfig/tarball/httpd-2.2.14/modules/proxy #


ht01b07:~/apacheConfig/tarball/httpd-2.2.14/modules/proxy # diff
mod_proxy_http.c mod_proxy_http.c.real
677,696d676
<
<
< static
< int ap_not_in_preserve_list(char *url,
<                             apr_array_header_t *preserve_host_urls,
apr_pool_t *memoryPool)
< {
<     int i;
<     int l;
<
<     for (i = 0; i < preserve_host_urls->nelts; i++) {
<         const char *s = ((const char**)preserve_host_urls->elts)[i];
<         l = strlen(s);
<
<         if (!strncmp(url, s, l)) {
<             return 0;
<        }
<     }
<     return 1;
< }
<
753,754c733
<     if (conf->preserve_host == 0 &&
<         ap_not_in_preserve_list(url, conf->preserve_host_urls, r->pool)) {
---
>     if (conf->preserve_host == 0) {
ht01b07:~/apacheConfig/tarball/httpd-2.2.14/modules/proxy #







> Quite small, only took a few hours to do. I'll post it tomorrow.
>
> Basically it does the same as PreserveProxyHost except it works on a URL
> basis, not on a per virtual host basis.
>
>
>> On Wed, 23 Feb 2011 14:12:44 -0500
>> "Jeffrey E Burgoyne" <burgo...@keenuh.com> wrote:
>>
>>
>>> If people feel this is a worthwhile addition to the main code base,
>>> please
>>> let me know and I'll pass it back.
>>
>> Not sure I follow exactly what you've added.
>>
>> How big a patch is your change?  If it's not too big to admit
>> easy review, you could post it or a URL to look at it.
>>
>>
>> --
>> Nick Kew
>>
>> Available for work, contract or permanent.
>> http://www.webthing.com/~nick/cv.html
>>
>
>
> --
> Jeffrey Burgoyne
> Chief Technology Officer
> KCSI Keenuh Consulting Services Inc
> www.keenuh.com
> burgo...@keenuh.com
>
>
>


-- 
Jeffrey Burgoyne
Chief Technology Officer
KCSI Keenuh Consulting Services Inc
www.keenuh.com
burgo...@keenuh.com


Reply via email to