Document handling of connection-mode sockets by sendto(2).

sendto(2), sendmsg(2) and sendmmsg(2) return ENOTCONN if a destination
address is specified and the socket is not connected and the socket
protocol does not automatically connect ("implied connect").  Document
that.  Also document the fact that the destination address is ignored
for connection-mode sockets if the socket is already connected.

PR:		245817
Submitted by:	Erik Inge Bolsø <knan-bfo@modirum.com>
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D24530
This commit is contained in:
Mark Johnston 2020-04-27 16:12:32 +00:00
parent 344d411c67
commit bea2668321
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=360384

View File

@ -28,7 +28,7 @@
.\" From: @(#)send.2 8.2 (Berkeley) 2/21/94
.\" $FreeBSD$
.\"
.Dd January 4, 2019
.Dd April 27, 2020
.Dt SEND 2
.Os
.Sh NAME
@ -69,18 +69,35 @@ The
function
may be used only when the socket is in a
.Em connected
state, while
state.
The functions
.Fn sendto ,
.Fn sendmsg
and
.Fn sendmmsg
may be used at any time.
may be used at any time if the socket is connectionless-mode.
If the socket is connection-mode, the protocol
must support implied connect (currently
.Xr tcp 4
is the only protocol with support) or the socket must be in a
connected state before use.
.Pp
The address of the target is given by
.Fa to
with
.Fa tolen
specifying its size.
specifying its size, or the equivalent
.Fa msg_name
and
.Fa msg_namelen
in
.Fa struct msghdr .
If the socket is in a connected state, the target address passed to
.Fn sendto ,
.Fn sendmsg
or
.Fn sendmmsg
is ignored.
The length of the message is given by
.Fa len .
If the message is too long to pass atomically through the
@ -195,6 +212,8 @@ An invalid descriptor was specified.
The destination address is a broadcast address, and
.Dv SO_BROADCAST
has not been set on the socket.
.It Bq Er ENOTCONN
The socket is connection-mode but is not connected.
.It Bq Er ENOTSOCK
The argument
.Fa s
@ -242,6 +261,7 @@ This typically means that the socket
is not connected.
.El
.Sh SEE ALSO
.Xr connect 2 ,
.Xr fcntl 2 ,
.Xr getsockopt 2 ,
.Xr recv 2 ,