Possible infinite loop in mod_proxy

Chris Monson <[email protected]> Mon, 17 Feb 2003 12:11:00 -0700
Newsgroups gmane.comp.apache.mod-proxy
Message-ID <[email protected]>
I apologize if this is not the correct place to ask questions about 
potential mod_proxy bugs.  It seemed the best choice, so please correct 
me (gently) if I am wrong.

I have been working with mod_proxy under Apache 2.0.44 and have been 
having some problems.

The basic setup is as follows:

Listen 8008
<VirtualHost *:8008>
    ServerName myproxy.mydomain.mytld
    DocumentRoot "/unnecessary/path/to/files"

    ProxyRequests On
    ProxyPreserveHost on
    ProxyReceiveBufferSize 4096
    ProxyTimeout 20
    ProxyVia off
</VirtualHost>

In my browser, I set the proxy to be myproxy.mydomain.mytld at port 
8008.  Things seem to work all right for simple requests.  However, 
requesting a really messy page like "www.cnn.com" causes some 
interesting problems.  (For bug duplication purposes, I am currently 
using Mozilla 1.3a, but this has been duplicated on various versions of 
IE, as well).

After making the request to www.cnn.com, Apache must be forcefully 
restarted in order serve any other requests reliably.  Request threads 
do not appear to want to give up their connection to the internet once 
the request is completed.  An ethereal dump indicates that Apache is 
still sending TCP traffic to the destination server.  An endless stream 
of ACK packets is sent to the destination server until Apache is 
forcefully restarted.  I have verified that it is not the browser that 
is doing this.

Of course, since the backend continues to think it is speaking with a 
server, the frontend socket gets tied up and requests to other pages 
block until the server is restarted, causing a host of other symptoms.  
I believe that the rest of the problems I am experiencing are entirely 
due to this seeming infinite loop.

Apache 2.0 is a complex piece of software, so I apologize if this is in 
fact a bug in the server core rather than in mod_proxy.  The server 
seems to work all right without serving as a proxy, so it seemed 
reasonable to hit this list.

C