From owner-cvs-all@FreeBSD.ORG Thu Sep 15 12:16:50 2005 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0B6E416A41F; Thu, 15 Sep 2005 12:16:50 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [204.156.12.53]) by mx1.FreeBSD.org (Postfix) with ESMTP id 88A7A43D55; Thu, 15 Sep 2005 12:16:49 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [204.156.12.50]) by cyrus.watson.org (Postfix) with ESMTP id BC96446B81; Thu, 15 Sep 2005 08:16:46 -0400 (EDT) Date: Thu, 15 Sep 2005 13:16:46 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Maxim Konovalov In-Reply-To: <200509151145.j8FBjbAU070614@repoman.freebsd.org> Message-ID: <20050915130901.R75005@fledge.watson.org> References: <200509151145.j8FBjbAU070614@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern uipc_socket.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Sep 2005 12:16:50 -0000 On Thu, 15 Sep 2005, Maxim Konovalov wrote: > maxim 2005-09-15 11:45:37 UTC > > FreeBSD src repository > > Modified files: > sys/kern uipc_socket.c > Log: > o Return ENOTCONN when shutdown(2) on non-connected socket. > > PR: kern/84761 > Submitted by: James Juran > R-test: tools/regression/sockets/shutdown > MFC after: 1 month Are you sure this is the right thing to do? I've seen shutdown used in several applications on non-connection-oriented sockets in order to indicate no messages will be received, so not to allow received packets to consume space. Typical use is in the context of a raw IP or IPv6 socket, where raw packets will be sent but never received, and the socket will otherwise collect the normal random network detrious. For example, rtsold(8) uses shutdown(2) on its IPv6 raw socket to indicate it is send-only, so received packets should not be stored in the socket buffer since they will never be read. It does, however, contain the not unusual bug that it is called with an argument of 0, assuming that that will be the value SHUT_RD. I'm fairly sure we used to have other examples of shutdown(2) being used in this way in the tree but don't see any others in a casual glance. While POSIX mentions behavior for full-duplex connections, it does not specify for sockets that are not connection-oriented, so as I read it, the behavior we provide is permitted. Robert N M Watson