You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Ruediger Pluem <rp...@apache.org> on 2007/05/12 17:10:28 UTC

Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h


On 05/12/2007 04:12 PM, jim@apache.org wrote:
> Author: jim
> Date: Sat May 12 07:12:24 2007
> New Revision: 537429
> 
> URL: http://svn.apache.org/viewvc?view=rev&rev=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=diff&rev=537429&r1=537428&r2=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=diff&rev=537429&r1=537428&r2=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

Posted by Jim Jagielski <ji...@jaguNET.com>.
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, jim@apache.org wrote:
>>
>>> Author: jim
>>> Date: Sat May 12 07:12:24 2007
>>> New Revision: 537429
>>>
>>> URL: http://svn.apache.org/viewvc?view=rev&rev=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=diff&rev=537429&r1=537428&r2=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

Posted by Ruediger Pluem <rp...@apache.org>.

On 05/12/2007 05:10 PM, Ruediger Pluem wrote:
> 
> On 05/12/2007 04:12 PM, jim@apache.org wrote:
> 
>>Author: jim
>>Date: Sat May 12 07:12:24 2007
>>New Revision: 537429
>>
>>URL: http://svn.apache.org/viewvc?view=rev&rev=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=diff&rev=537429&r1=537428&r2=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

Posted by Jim Jagielski <ji...@jaguNET.com>.
On May 12, 2007, at 12:45 PM, Joshua Slive wrote:

>> On 05/12/2007 04:12 PM, jim@apache.org wrote:
>> > Author: jim
>> > Date: Sat May 12 07:12:24 2007
>> > New Revision: 537429
>> >
>> > URL: http://svn.apache.org/viewvc?view=rev&rev=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

Posted by Joshua Slive <jo...@slive.ca>.
> On 05/12/2007 04:12 PM, jim@apache.org wrote:
> > Author: jim
> > Date: Sat May 12 07:12:24 2007
> > New Revision: 537429
> >
> > URL: http://svn.apache.org/viewvc?view=rev&rev=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.

Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h

Posted by Jim Jagielski <ji...@jaguNET.com>.
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.