Date: Fri, 10 Oct 2014 21:27:13 +0200 From: Jilles Tjoelker <jilles@stack.nl> To: d@delphij.net Cc: freebsd-doc@freebsd.org Subject: Re: accept(2): may return EAGAIN Message-ID: <20141010192713.GA85547@stack.nl> In-Reply-To: <5435E0C1.9000403@delphij.net> References: <5435E0C1.9000403@delphij.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Oct 08, 2014 at 06:11:29PM -0700, Xin Li wrote: > It seems like accept(2) may and does return EAGAIN. Do the following > change look appropriate to you? > Index: lib/libc/sys/accept.2 > =================================================================== > --- lib/libc/sys/accept.2 (revision 272709) > +++ lib/libc/sys/accept.2 (working copy) > @@ -28,7 +28,7 @@ > .\" @(#)accept.2 8.2 (Berkeley) 12/11/93 > .\" $FreeBSD$ > .\" > -.Dd October 1, 2013 > +.Dd October 9, 2014 > .Dt ACCEPT 2 > .Os > .Sh NAME > @@ -201,7 +201,7 @@ The > .Fa addr > argument is not in a writable part of the > user address space. > -.It Bq Er EWOULDBLOCK > +.It Bo Er EWOULDBLOCK Bc or Bq Er EAGAIN > The socket is marked non-blocking and no connections > are present to be accepted. > .It Bq Er ECONNABORTED This is correct, but it is inconsistent to write "[EWOULDBLOCK] or [EAGAIN]" only in one particular man page. The situation in FreeBSD is that EWOULDBLOCK == EAGAIN. This is permitted but not required by POSIX. The two errors may have different numeric values and in the case of socket operations, EWOULDBLOCK may be returned instead of EAGAIN. (For example, accept(2) may return [EWOULDBLOCK] instead of [EAGAIN], and read(2) may return [EWOULDBLOCK] instead of [EAGAIN] if the operation is on a socket.) Unfortunately, intro(2) does not mention EWOULDBLOCK at all. BSD flock(2) and the related open(2) flags also use EWOULDBLOCK; these can probably stay that way (applications need not check for [EAGAIN]). -- Jilles Tjoelker
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141010192713.GA85547>