On Sun, Nov 23, 2014 at 9:57 PM, Eric Covener <[email protected]> wrote:
> On Fri, Jul 11, 2014 at 6:36 AM,  <[email protected]> wrote:
>> static int ap_proxy_strcmp_ematch(const char *str, const char *expected)
>> +{
>> +    apr_size_t x, y;
>> +
>> +    for (x = 0, y = 0; expected[y]; ++y, ++x) {
>> +        if ((!str[x]) && (expected[y] != '
>> || !apr_isdigit(expected[y + 1])))
>> +            return -1;
>> +        if (expected[y] == ' && apr_isdigit(expected[y + 1])) {
>> +            while (expected[y] == ' && apr_isdigit(expected[y + 1]))
>> +                y += 2;
>> +            if (!expected[y])
>> +                return 0;
>> +            while (str[x]) {
>> +                int ret;
>> +                if ((ret = ap_proxy_strcmp_ematch(&str[x++], &expected[y])) 
>> != 1)
>> +                    return ret;
>> +            }
>> +            return -1;
>> +        }
>> +        else if (expected[y] == '\\') {
>> +            /* NUL is an invalid char! */
>> +            if (!expected[++y])
>> +                return -2;
>> +        }
>> +        if (str[x] != expected[y])
>> +            return 1;
>> +    }
>> +    return (str[x] != '\0');
>> +}
>

Sorry, stray keystroke (tab?) made gmail send early.

This is breaking the common PHP-FPM recipes using unix domain sockets
in trunk e.g.

    ProxyPassMatch ^/info.php$
"unix:/var/run/php5-fpm.sock|fcgi://localhost/home/covener/SRC/httpd-trunk/built/htdocs/"

The old test accepted the worker URL being a prefix of the worker:

    strncmp(url_copy, worker->s->name, worker_name_length) == 0)

but now that doesn't happen for ProxyPassMatch.  This seems to be
due to the last return expecting str[x] to have been totally consumed
by the expected (worker) string.


-- 
Eric Covener
[email protected]

Reply via email to