apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Justin Erenkrantz" <jus...@erenkrantz.com>
Subject Re: [Fwd: Re: How to detect is the socket is still open]
Date Wed, 16 Aug 2006 07:01:34 GMT
On 8/3/06, Gonzalo Paniagua Javier <gonzalito@gmail.com> wrote:
> > > It reports that the socket is readable.
> >
> > And when you read it, it returns EOF?
>
> Yes, it returns a 0.

Are you on Mac OS X by any chance?

I'm seeing this same thing with serf via apr_pollset_poll().

select() returns 5 (POLLIN & POLLOUT I think) - but by this point, the
local end has already received a remote FIN.

My repro case (ra_serf / serf / apr trunk) is:

% svn co -r300000 http://svn.apache.org/repos/asf/httpd/httpd/trunk
% svn up -rHEAD trunk

On that second update, there are often 15+ second pauses from svn.a.o
that causes httpd to close the connection as its idle.  But, when we
want to reuse that connection later, serf does a pollset_poll() and it
says that the connection is good to go.  But, it's not and we get an 0
from read().  This leads to a 'Premature EOF seen from server' error.

Shouldn't select() be returning POLLERR in this case?  Or, am I nuts?
Are we hitting some type of stupidity in Darwin?  -- justin

Mime
View raw message