On Thu, Jul 10, 2014 at 04:28:13PM +0300, Konstantin Belousov wrote:
> On Thu, Jul 10, 2014 at 01:04:53PM +0000, Baptiste Daroussin wrote:
> > Author: bapt
> > Date: Thu Jul 10 13:04:52 2014
> > New Revision: 268493
> > URL: http://svnweb.freebsd.org/changeset/base/268493
> > 
> > Log:
> >   Support EAGAIN in fetch_writev
> >   
> >   Reviewed by:      des
> >   Approved by:      des
> > 
> > Modified:
> >   head/lib/libfetch/common.c
> > 
> > Modified: head/lib/libfetch/common.c
> > ==============================================================================
> > --- head/lib/libfetch/common.c      Thu Jul 10 12:41:58 2014        
> > (r268492)
> > +++ head/lib/libfetch/common.c      Thu Jul 10 13:04:52 2014        
> > (r268493)
> > @@ -1110,6 +1110,8 @@ fetch_writev(conn_t *conn, struct iovec 
> >                     errno = 0;
> >                     pfd.revents = 0;
> >                     if (poll(&pfd, 1, deltams) < 0) {
> > +                           if (errno == EAGAIN)
> > +                                   continue;
> >                             if (errno == EINTR && fetchRestartCalls)
> >                                     continue;
> >                             return (-1);
> 
> How is this error possible ? poll(2) converts EAGAIN from seltdwait(9)
> to no error.

For posix compliance, libfetch is not only used on FreeBSD, reading at:
http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html I can read:

[EAGAIN]
    The allocation of internal data structures failed but a subsequent request
    may succeed.

Am I missing something?

Bapt

Attachment: pgpUAso_JOSfw.pgp
Description: PGP signature

Reply via email to