Something doesn't add up.  Maybe I'm missing a pertinent fact.

On one hand, if sockets are being kept alive between requests, why is Firefox opening a new socket for each request?

On the other hand, if Firefox is opening a new socket for each request, why isn't it closing the old ones?

Why isn't Firefox also running out of file descriptors, if it's opening new sockets without closing old ones?

--
Rocco Caputo - [EMAIL PROTECTED]


On Mar 21, 2007, at 15:50, Eric Busto wrote:

Firefox seems to keep them alive as well. Unfortunately, since the app
I am writing uses a meta refresh every few seconds to have the browser
reload it, a browser left up overnight will easily cause the app to run
out of file descriptors.

        -----Original Message-----
        From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Mathieu Longtin
        Sent: Wednesday, March 21, 2007 12:27 PM
        To: Eric Busto
        Cc: poe@perl.org
        Subject: Re: POE::Component::Server::HTTP, Keep alive, and
leaking sockets
        
        
        My memory is fuzzy, but I think if you close the browser,
especially if it's local, the sockets closes. I remember IE keeping the
connections alive for a while.
        
        
        On 3/21/07, Eric Busto <[EMAIL PROTECTED]> wrote:

                From what I have gathered, for a web server to be HTTP
1.1 compliant, it
                must support keep alive, and keep alive is enabled by
default.
                
                When using POE::Component::Server::HTTP in its simple
case, as in the
                cookbook entry
        
http://poe.perl.org/?POE_Cookbook/Web_Server_With_Components, keeping
                the connections open even after the event for the URL
request has been
                handled causes file descriptors to "leak" as the socket
will not get
                closed.
                
                I can force the connection to get closed after the
ContentHandler
                triggers by having a PreHandler like so:
                POE::Component::Server::HTTP->new (
                        Port            => 80,
                        PreHandler      => {
                                '/'             => sub {
$_[0]->header(Connection =>
                'close') }
                        },
                        ContentHandler  => {
                                '/'             => \&web_status,
                        }
                }
                
                My question is, is this the "right" thing to do?  Is
there a more
                elegant method, or am I missing something that should be
obvious?  If
                I'm not missing anything, should this be added to the
cookbook page for
                a basic web server with PoCo::Server::HTTP?

Reply via email to