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