cvs commit: src/sys/kern uipc_socket.c
Gleb Smirnoff
glebius at FreeBSD.org
Thu Sep 15 23:57:29 PDT 2005
On Thu, Sep 15, 2005 at 05:14:04PM +0400, Maxim Konovalov wrote:
M> > Are you sure this is the right thing to do? I've seen shutdown used
M> > in several applications on non-connection-oriented sockets in order
M> > to indicate no messages will be received, so not to allow received
M> > packets to consume space. Typical use is in the context of a raw IP
M> > or IPv6 socket, where raw packets will be sent but never received,
M> > and the socket will otherwise collect the normal random network
M> > detrious.
M> >
M> > For example, rtsold(8) uses shutdown(2) on its IPv6 raw socket to
M> > indicate it is send-only, so received packets should not be stored
M> > in the socket buffer since they will never be read. It does,
M> > however, contain the not unusual bug that it is called with an
M> > argument of 0, assuming that that will be the value SHUT_RD. I'm
M> > fairly sure we used to have other examples of shutdown(2) being used
M> > in this way in the tree but don't see any others in a casual glance.
M> >
M> > While POSIX mentions behavior for full-duplex connections, it does
M> > not specify for sockets that are not connection-oriented, so as I
M> > read it, the behavior we provide is permitted.
M>
M> Linux 2.4.21 return ENOTSUP for SOCK_RAW and ENOTCONN for
M> non-connected SOCK_DGRAM. Solaris 9 returns ENOTCONN for
M> non-connected SOCK_RAW and they don't allow shutdown(2) on
M> non-connected sockets. Anyhow, I'll backout this code.
I see you have already backed out :(
What about return code back with check that socket belongs to
PR_CONNREQUIRED protocol?
--
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
More information about the cvs-src
mailing list