On 11/21/2005 06:52 PM, Jim Jagielski wrote:
> Thanks for the report: You said that you tested against
> 2.1.10-HEAD right?
> 
> On Nov 21, 2005, at 10:25 AM, Hansjoerg Pehofer wrote:
> 
> Hi,
> 
> I briefly tried httpd-2.1.10 today and still see this.
> (Same httpd.conf, only changed ServerRoot to
> "/usr/local/apache2-2.1.10/")
> 
> kind regards
> Hansjörg
> 
> Hansjoerg Pehofer <[EMAIL PROTECTED]> writes:
> 
>>>> Hi,
>>>>
>>>> I experienced Apache-2.1.7 (/w WorkerMPM on Solaris 9) connecting  to
>>>> the
>>>> wrong backends when having configured more than one balancer cluster.
>>>> (see httpd.conf below)
>>>> ErrorLog shows some odd entries (marked in the example below) during
>>>> proxy_util.c's ap_proxy_determine_connection().
>>>>
>>>> I could work around this behaviour by changing line 1788 of 
>>>> proxy_util.c
>>>>
>>>> - else if (!conn->hostname) {
>>>> + else if (!conn->hostname || strcmp(conn->hostname, uri- >hostname)
>>>> != 0) {
>>>>
>>>> This unlikely is a fix, however: I wonder if someone has seen this
>>>> behavior before and whether someone familiar with this modules can  hint
>>>> me where to look deeper into this.
>>>>
>>>> kind regards
>>>> Hansjörg

I think the real problem happens if you have requests to different backends 
(webapp-cluster, axkit-cluster) on one
shared keepalive connection to the reverse proxy.

So having something like

GET /library/q
and
GET /anything

served over the same keepalive connection between client and reverse proxy 
should cause trouble, because of

    if (!r->main) {
        backend = (proxy_conn_rec *) ap_get_module_config(c->conn_config,
                                                      &proxy_http_module);
    }

starting at line 1668 of mod_proxy_http.c which gets the previous backend
connection. Although the socket to the backend is closed for Reverse Proxy 
Requests
in ap_proxy_determine_connection of line 1856 of proxy_util.c, the new 
connection
gets created to the same address in line 2010 of proxy_util.c 
(ap_proxy_connect_backend).
I have not found the time to search for a solution.
Just as a check to my theory can you disable keepalives and see if everything 
works correctly
then?


[..cut..]


Regards

Rüdiger

Reply via email to