[email protected] wrote:
> Author: jim
> Date: Thu Jan 23 14:09:40 2014
> New Revision: 1560689
> 
> URL: http://svn.apache.org/r1560689
> Log:
> Tuck away UDS path in request-rec, since worker isn't
> thread-safe. Protect from NULL refs.
> 
> Modified:
>     httpd/httpd/trunk/modules/proxy/proxy_util.c
> 
> Modified: httpd/httpd/trunk/modules/proxy/proxy_util.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/proxy_util.c?rev=1560689&r1=1560688&r2=1560689&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/proxy/proxy_util.c (original)
> +++ httpd/httpd/trunk/modules/proxy/proxy_util.c Thu Jan 23 14:09:40 2014

> @@ -2275,7 +2271,17 @@ ap_proxy_determine_connection(apr_pool_t
>                                          conn->pool);
>          }
>      }
> -    if (!(*worker->s->uds_path) && worker->s->is_address_reusable && 
> !worker->s->disablereuse) {
> +    else {
> +        /*
> +         * In UDS cases, some structs are NULL. Protect from de-refs
> +         * and provide info for logging at the same time.
> +         */
> +        apr_sockaddr_t *sa;
> +        apr_sockaddr_info_get(&sa, NULL, APR_UNSPEC, 0, 0, conn->pool);
> +        conn->hostname = "httpd-UDS";
> +        conn->addr = sa;
> +    }

You cannot be sure in this else branch that you are in the UDS case. It could 
that there is an existing hostname or that
the address is reusable. You should do the stuff above at the end of the if 
block starting in 2204 (if (uds_path) {
)

> +    if (!(uds_path) && worker->s->is_address_reusable && 
> !worker->s->disablereuse) {
>          /*
>           * Looking up the backend address for the worker only makes sense if
>           * we can reuse the address.
> 

Regards

RĂ¼diger

Reply via email to