Commit 3efc44cb authored by Mladen Turk's avatar Mladen Turk
Browse files

Use forward worker for all PROXYREQ_PROXY requests.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105045 13f79535-47bb-0310-9956-ffa450edef68
parent fbbb266d
Loading
Loading
Loading
Loading
+24 −7
Original line number Diff line number Diff line
@@ -1237,6 +1237,16 @@ PROXY_DECLARE(int) ap_proxy_pre_request(proxy_worker **worker,
{
    int access_status;
    
    if (r->proxyreq == PROXYREQ_PROXY) {
        if (conf->forward) {
            *balancer = NULL;
            *worker = conf->forward;
            access_status = OK;
        }
        else
            access_status = DECLINED;
        return access_status;
    }
    access_status = proxy_run_pre_request(worker, balancer, r, conf, url);
    if (access_status == DECLINED && *balancer == NULL) {
        *worker = ap_proxy_get_worker(r->pool, conf, *url);
@@ -1647,12 +1657,19 @@ ap_proxy_determine_connection(apr_pool_t *p, request_rec *r,
                           uri->fragment ? "#" : "",
                           uri->fragment ? uri->fragment : "", NULL);
    }

    if (r->proxyreq == PROXYREQ_PROXY) {
        err = apr_sockaddr_info_get(&(worker->cp->addr),
                                    conn->hostname, APR_UNSPEC,
                                    conn->port, 0,
                                    p);
    }
    else if (!worker->cp->addr)
        /* Worker can have the single constant backend adress.
         * The single DNS lookup is used once per worker.
        * If dynamic change is needed then set the addr to NULL
        * inside dynamic config to force the lookup.
        */
    if (!worker->cp->addr)
        err = apr_sockaddr_info_get(&(worker->cp->addr),
                                    conn->hostname, APR_UNSPEC,
                                    conn->port, 0,