Did this become unnecessary when SetHandler/AddHandler support was
added for proxy:unix:/ ... configuration?

On Fri, Apr 18, 2014 at 12:52 PM, Yann Ylavic <ylavic....@gmail.com> wrote:
> On Fri, Apr 18, 2014 at 5:57 PM, Yann Ylavic <ylavic....@gmail.com> wrote:
>> Patch inline.
>>
>> Index: modules/proxy/proxy_util.c
>> ===================================================================
>> --- modules/proxy/proxy_util.c    (revision 1588466)
>> +++ modules/proxy/proxy_util.c    (working copy)
>> @@ -1508,32 +1508,111 @@ PROXY_DECLARE(char *) ap_proxy_worker_name(apr_poo
> [...]
>> +PROXY_DECLARE(proxy_worker *) ap_proxy_get_worker_ex(apr_pool_t *p,
>> +                                                     proxy_balancer 
>> *balancer,
>> +                                                     proxy_server_conf 
>> *conf,
>> +                                                     const char *url, int 
>> uds,
>> +                                                     char **to, char **by)
>> +{
> [...]
>> +    if (!uds) {
>> +        /* No real interest in *to or *by being used without uds,
>> +         * don't leave dangling pointers anyway.
>> +         */
>> +        if (to) {
>> +            *to = NULL;
>> +        }
>> +        if (by) {
>> +            *by = NULL;
>> +        }
>> +        url_length = 0;
>> +        url_copy = NULL;
>> +    }
>> +    else {
>> +        url_length = strlen(url);
>
> Not the right place to initialize url_length, will be fixed in next
> patch (if useful).
>
>> +        url_copy = apr_pstrmemdup(p, url, url_length);
>> +        url_copy = ap_proxy_split_url(p, url_copy, by);
>> +        if (to) {
>> +            *to = url_copy;
>> +        }
>> +        url = url_copy;
>> +    }
>> +
>>      c = ap_strchr_c(url, ':');
>>      if (c == NULL || c[1] != '/' || c[2] != '/' || c[3] == '\0') {
>>          return NULL;
>>      }
>>
>> -    url_length = strlen(url);
>> -    url_copy = apr_pstrmemdup(p, url, url_length);
>> +    if (!url_copy) {
>> +        url_length = strlen(url);
>> +        url_copy = apr_pstrmemdup(p, url, url_length);
>> +    }
>>
>
> Please read something the following instead :
>
> +    if (!uds) {
> +        /* No real interest in *to or *by being used without uds,
> +         * don't leave dangling pointers anyway.
> +         */
> +        if (to) {
> +            *to = NULL;
> +        }
> +        if (by) {
> +            *by = NULL;
> +        }
> +        url_copy = NULL;
> +    }
> +    else {
> +        url_copy = ap_proxy_split_url(p, apr_pstrdup(p, url), by);
> +        if (to) {
> +            *to = url_copy;
> +        }
> +        url = url_copy;
> +    }
> +
>      c = ap_strchr_c(url, ':');
>      if (c == NULL || c[1] != '/' || c[2] != '/' || c[3] == '\0') {
>          return NULL;
>      }
>
>      url_length = strlen(url);
> -    url_copy = apr_pstrmemdup(p, url, url_length);
> +    if (url_copy == NULL) {
> +        url_copy = apr_pstrmemdup(p, url, url_length);
> +    }



-- 
Eric Covener
cove...@gmail.com

Reply via email to