> -----Ursprüngliche Nachricht-----
> Von: Joe Orton  
> Gesendet: Mittwoch, 18. Juni 2008 17:20
> An: Ruediger Pluem
> Cc: APR Developer List; dev@httpd.apache.org
> Betreff: Re: showstopper to 1.3.1?
> 
> On Sat, Jun 14, 2008 at 11:24:43PM +0200, Ruediger Pluem wrote:
> > So the code before said that if port_getn returns -1 (== 
> fails) we return APR_TIMEUP
> > if the error is ETIME or EINTR and APR_EGENERAL.
> > So IMHO the error message (in this IMHO the same) would 
> have been shown with the old
> > code.
> > What is more strange to me is that we get a timeout error 
> ((70007)The timeout specified has
> > expired: apr_pollset_poll:) even thought we called 
> apr_pollset_poll with -1 as timeout which
> > means wait indefinitely or no timeout. The implementation 
> of apr_pollset_poll seems to be
> > correct as it ensures that we supply NULL in this case to 
> port_getn. But OTOH the man page
> > for port_get / port_getn documents timeout behaviour only 
> for port_get (setting timeout parameter
> > to null means not timeout) not for port_getn. So couldn't 
> this be a Solaris bug?
> 
> It may be working as designed - this code path gets trigged 
> when all the 
> fds in the pollset get closed asynchronously; see PR 42829 and the 
> thread concerning that bug on this list.

So do I get it correct that port_getn if called only with closed
fd's associated to this port returns immediately with ETIME set as
errno despite its timeout being set to infinite?

> 
> If it is working as designed it is arguably more useful than 
> the epoll 
> behaviour in the same case; at least, it's more useful for httpd.  
> AFAICT the only effect of this to prefork is to generate some 
> error_log 
> spam; could be ignored easily enough.
> 
> The APR change r641661 certainly looks correct anyway.

As I understand it an error would be returned by apr_pollset_poll
with and without r641661 in place.

Regards

Rüdiger

Reply via email to