connect.2: Document error semantics of nonblocking UNIX domain sockets

connect(2) on a nonblocking UNIX domain socket when the receive
queue is full results in EAGAIN [1]. This is unlike other
connection-based socket families that return EINPROGRESS as
already documented.

mtk: confirmed with some light testing. And in
net/unix/af_unix.c::unix_stream_connect(), we have:

        if (unix_recvq_full(other)) {
                err = -EAGAIN;
                if (!timeo)
                        goto out_unlock;

Signed-off-by: Benjamin Peterson <benjamin@python.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Benjamin Peterson 2018-08-22 21:13:39 -07:00 committed by Michael Kerrisk
parent fa38cc321f
commit 1466257758
1 changed files with 6 additions and 2 deletions

View File

@ -168,7 +168,9 @@ The passed address didn't have the correct address family in its
field.
.TP
.B EAGAIN
Insufficient entries in the routing cache.
For nonblocking UNIX domain sockets, the socket is nonblocking, and the
connection cannot be completed immediately. For other socket families, there are
insufficient entries in the routing cache.
.TP
.B EALREADY
The socket is nonblocking and a previous connection attempt has not yet
@ -188,7 +190,9 @@ The socket structure address is outside the user's address space.
.TP
.B EINPROGRESS
The socket is nonblocking and the connection cannot be completed
immediately.
immediately. (UNIX domain sockets return
.BR EAGAIN
instead.)
It is possible to
.BR select (2)
or