Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h
Author: jim Date: Sat May 12 07:12:24 2007 New Revision: 537429 URL: http://svn.apache.org/viewvc?view=revrev=537429 Log: Add regex pattern matching to ProxyPass, allowing, for example: ProxyPass ~ \.gif balancer://imagecluster It would also be really nice to have ProxyPassMatch, a la RedirectMatch and AliasMatch and DirectoryMatch, et al. Historically, we seem to have a problem with the '~' syntax in that it's extremely easy to overlook it in the documentation, or, in certain fonts, to misread it as '-' or '_'. --Rich
Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h
On May 13, 2007, at 3:07 PM, Ruediger Pluem wrote: On 05/12/2007 05:10 PM, Ruediger Pluem wrote: On 05/12/2007 04:12 PM, [EMAIL PROTECTED] wrote: Author: jim Date: Sat May 12 07:12:24 2007 New Revision: 537429 URL: http://svn.apache.org/viewvc?view=revrev=537429 Log: Add regex pattern matching to ProxyPass, allowing, for example: ProxyPass ~ \.gif balancer://imagecluster URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/ mod_proxy.h?view=diffrev=537429r1=537428r2=537429 == --- httpd/httpd/trunk/modules/proxy/mod_proxy.h (original) +++ httpd/httpd/trunk/modules/proxy/mod_proxy.h Sat May 12 07:12:24 2007 @@ -109,6 +109,7 @@ struct proxy_alias { const char *real; const char *fake; +ap_regex_t *regex; }; Doesn't this require a minor bump? What about the minor bump? Is it not needed because there is no typedef for struct proxy_alias and thus struct proxy_alias is regarded as private? Yep... at least I don't think we need one since it's not a publicly used struct.
Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h
On May 12, 2007, at 12:45 PM, Joshua Slive wrote: On 05/12/2007 04:12 PM, [EMAIL PROTECTED] wrote: Author: jim Date: Sat May 12 07:12:24 2007 New Revision: 537429 URL: http://svn.apache.org/viewvc?view=revrev=537429 Log: Add regex pattern matching to ProxyPass, allowing, for example: ProxyPass ~ \.gif balancer://imagecluster On the configuration consistency side, the ~ thing is deprecated everywhere and the standard way to do this is to have a ProxyPassMatch directive (see RedirectMatch, DirectoryMatch, etc). Yep. The ProxyPassMatch stuff is currently being worked (basically, some function name changes ala add_proxy_regex) but I was hoping to work the support for DirectoryMatch .. into that patch as well before committing... but most likely I'll just add in ProxyPassMatch first.
Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h
On May 12, 2007, at 11:10 AM, Ruediger Pluem wrote: Sorry for being picky here: One space too much. ... Again I am picky here: Too many spaces. No worries. Good catches.
Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h
On 05/12/2007 05:10 PM, Ruediger Pluem wrote: On 05/12/2007 04:12 PM, [EMAIL PROTECTED] wrote: Author: jim Date: Sat May 12 07:12:24 2007 New Revision: 537429 URL: http://svn.apache.org/viewvc?view=revrev=537429 Log: Add regex pattern matching to ProxyPass, allowing, for example: ProxyPass ~ \.gif balancer://imagecluster URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.h?view=diffrev=537429r1=537428r2=537429 == --- httpd/httpd/trunk/modules/proxy/mod_proxy.h (original) +++ httpd/httpd/trunk/modules/proxy/mod_proxy.h Sat May 12 07:12:24 2007 @@ -109,6 +109,7 @@ struct proxy_alias { const char *real; const char *fake; +ap_regex_t *regex; }; Doesn't this require a minor bump? What about the minor bump? Is it not needed because there is no typedef for struct proxy_alias and thus struct proxy_alias is regarded as private? Regards RĂ¼diger
Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h
On 05/12/2007 04:12 PM, [EMAIL PROTECTED] wrote: Author: jim Date: Sat May 12 07:12:24 2007 New Revision: 537429 URL: http://svn.apache.org/viewvc?view=revrev=537429 Log: Add regex pattern matching to ProxyPass, allowing, for example: ProxyPass ~ \.gif balancer://imagecluster Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.c httpd/httpd/trunk/modules/proxy/mod_proxy.h Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.c URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?view=diffrev=537429r1=537428r2=537429 == --- httpd/httpd/trunk/modules/proxy/mod_proxy.c (original) +++ httpd/httpd/trunk/modules/proxy/mod_proxy.c Sat May 12 07:12:24 2007 @@ -510,19 +512,34 @@ fake = ent[i].fake; real = ent[i].real; } -len = alias_match(r-uri, fake); +if (ent[i].regex) { +if (!ap_regexec(ent[i].regex, r-uri, AP_MAX_REG_MATCH, regm, 0)) { +if ((real[0] == '!') (real[1] == '\0')) { +return DECLINED; +} +found = apr_pstrcat(r-pool, proxy:, real, +r-uri, NULL); +} +} +else { +len = alias_match(r-uri, fake); - if (len 0) { - if ((real[0] == '!') (real[1] == 0)) { - return DECLINED; - } +if (len != 0) { +if ((real[0] == '!') (real[1] == '\0')) { +return DECLINED; +} - r-filename = apr_pstrcat(r-pool, proxy:, real, +found = apr_pstrcat(r-pool, proxy:, real, r-uri + len, NULL); Sorry for being picky here: One space too much. - r-handler = proxy-server; - r-proxyreq = PROXYREQ_REVERSE; - return OK; - } + +} +} +if (found) { +r-filename = found; +r-handler = proxy-server; +r-proxyreq = PROXYREQ_REVERSE; +return OK; +} Again I am picky here: Too many spaces. Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.h URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.h?view=diffrev=537429r1=537428r2=537429 == --- httpd/httpd/trunk/modules/proxy/mod_proxy.h (original) +++ httpd/httpd/trunk/modules/proxy/mod_proxy.h Sat May 12 07:12:24 2007 @@ -109,6 +109,7 @@ struct proxy_alias { const char *real; const char *fake; +ap_regex_t *regex; }; Doesn't this require a minor bump? Regards RĂ¼diger
Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h
On 05/12/2007 04:12 PM, [EMAIL PROTECTED] wrote: Author: jim Date: Sat May 12 07:12:24 2007 New Revision: 537429 URL: http://svn.apache.org/viewvc?view=revrev=537429 Log: Add regex pattern matching to ProxyPass, allowing, for example: ProxyPass ~ \.gif balancer://imagecluster On the configuration consistency side, the ~ thing is deprecated everywhere and the standard way to do this is to have a ProxyPassMatch directive (see RedirectMatch, DirectoryMatch, etc). Joshua.