On 6/26/24 1:49 AM, yla...@apache.org wrote:
> Author: ylavic
> Date: Tue Jun 25 23:49:09 2024
> New Revision: 1918626
> 
> URL: http://svn.apache.org/viewvc?rev=1918626&view=rev
> Log:
> mod_proxy: Fixup UDS filename for mod_proxy called through r->handler.
> 
> * modules/proxy/proxy_util.c:
>   Export ap_proxy_fixup_uds_filename() from fix_uds_filename.
>   Call it from ap_proxy_pre_request() even for rewritten balancer workers.
> 
> * modules/proxy/mod_proxy.h:
>   Declare ap_proxy_fixup_uds_filename()
> 
> * modules/proxy/mod_proxy.c:
>   Fixup UDS filename from r->handler in proxy_handler().
> 
> * include/ap_mmn.h:
>   Bump MMN minor for ap_proxy_fixup_uds_filename()
> 
> 
> Modified:
>     httpd/httpd/trunk/include/ap_mmn.h
>     httpd/httpd/trunk/modules/proxy/mod_proxy.c
>     httpd/httpd/trunk/modules/proxy/mod_proxy.h
>     httpd/httpd/trunk/modules/proxy/proxy_util.c
> 
> Modified: httpd/httpd/trunk/include/ap_mmn.h
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/include/ap_mmn.h?rev=1918626&r1=1918625&r2=1918626&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/include/ap_mmn.h (original)
> +++ httpd/httpd/trunk/include/ap_mmn.h Tue Jun 25 23:49:09 2024
> @@ -729,6 +729,7 @@
>   * 20211221.22 (2.5.1-dev) Add AP_MPMQ_CAN_WAITIO
>   * 20211221.23 (2.5.1-dev) Add ap_set_content_type_ex(), ap_filepath_merge(),
>   *                         and AP_REQUEST_TRUSTED_CT BNOTE.
> + * 20211221.24 (2.5.1-dev) Add ap_proxy_fixup_uds_filename()
>   */
>  
>  #define MODULE_MAGIC_COOKIE 0x41503235UL /* "AP25" */
> @@ -736,7 +737,7 @@
>  #ifndef MODULE_MAGIC_NUMBER_MAJOR
>  #define MODULE_MAGIC_NUMBER_MAJOR 20211221
>  #endif
> -#define MODULE_MAGIC_NUMBER_MINOR 23             /* 0...n */
> +#define MODULE_MAGIC_NUMBER_MINOR 24             /* 0...n */
>  
>  /**
>   * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
> 
> Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?rev=1918626&r1=1918625&r2=1918626&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/proxy/mod_proxy.c (original)
> +++ httpd/httpd/trunk/modules/proxy/mod_proxy.c Tue Jun 25 23:49:09 2024

> @@ -1319,22 +1320,29 @@ static int proxy_handler(request_rec *r)
>          return DECLINED;
>      }
>  
> -    if (!r->proxyreq) {
> -        rc = DECLINED;
> -        /* We may have forced the proxy handler via config or .htaccess */
> -        if (r->handler &&
> -            strncmp(r->handler, "proxy:", 6) == 0 &&
> -            strncmp(r->filename, "proxy:", 6) != 0) {
> -            r->proxyreq = PROXYREQ_REVERSE;
> -            r->filename = apr_pstrcat(r->pool, r->handler, r->filename, 
> NULL);
> -            /* Still need to fixup/canonicalize r->filename */
> +    /* We may have forced the proxy handler via config or .htaccess */
> +    if (!r->proxyreq && r->handler && strncmp(r->handler, "proxy:", 6) == 0) 
> {
> +        char *old_filename = r->filename;
> +
> +        r->proxyreq = PROXYREQ_REVERSE;
> +        r->filename = apr_pstrcat(r->pool, r->handler, r->filename, NULL);
> +
> +        /* Still need to fixup/canonicalize r->filename */
> +        uri = r->filename + 6;
I don't think that we need to set uri to anything here. It either gets set 
below in
ap_proxy_fixup_uds_filename below or if not we set it to r->filename + 6 later 
(line 1427).

> +        rc = ap_proxy_fixup_uds_filename(r, &uri);
> +        if (rc <= OK) {
>              rc = proxy_fixup(r);
>          }
>          if (rc != OK) {
> -            return rc;
> +            r->filename = old_filename;
> +            r->proxyreq = 0;
>          }
> -    } else if (strncmp(r->filename, "proxy:", 6) != 0) {
> -        return DECLINED;
> +    }
> +    else if (r->proxyreq && strncmp(r->filename, "proxy:", 6) == 0) {
> +        rc = OK;
> +    }
> +    if (rc != OK) {
> +        return rc;
>      }
>  
>      /* handle max-forwards / OPTIONS / TRACE */
> 

Regards

RĂ¼diger

Reply via email to