From owner-freebsd-net@FreeBSD.ORG Tue Aug 31 10:04:02 2010 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 886C91065672; Tue, 31 Aug 2010 10:04:02 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 622E88FC16; Tue, 31 Aug 2010 10:04:02 +0000 (UTC) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTPS id A525546B53; Tue, 31 Aug 2010 06:04:01 -0400 (EDT) Date: Tue, 31 Aug 2010 11:04:01 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Andre Oppermann In-Reply-To: <4C7A7B25.9040300@freebsd.org> Message-ID: References: <4C7A7B25.9040300@freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-net@freebsd.org Subject: Re: Removal of deprecated implied connect for TCP X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Aug 2010 10:04:02 -0000 On Sun, 29 Aug 2010, Andre Oppermann wrote: > When T/TCP RFC1644 support was introduced in r6283 by wollman 15 years ago > the semantics of sendto(2) with regard to TCP sockets were changed. > > It became possible directly do a sendto(2) call with the target address in > the *to argument instead of doing a connect(2) first and subsequent write(2) > or send(2) calls as the standard TCP API specifies. Optionally MSG_EOR > could be specified to close the connection again right again after the data > has been sent out. > > This is totally non-portable and no other OS (Linux, NetBSD, OpenBSD, > Solaris, HP-UX) ever supported this functionality for TCP sockets. FreeBSD > was the only OS to ever ship this. > > T/TCP was ill-defined and had major security issues and never gained any > support. It has been defunct in FreeBSD and most code has been removed about > 6 years ago. The sendto(2) extended functionality is one of the last parts > that persisted and remained around living a zombie life. > > I want to remove it now because it is totally non-portable, has no known > users and complicates the TCP send path. The patch is attached. > > If you have any objections speak up now. I'm not entirely comfortable with this change, and would like a chance to cogitate on it a bit more. While I'm not aware of any applications depending on the semantic for TCP, I know that we do use it for UNIX domain sockets. Since it's a documented API, if we are going to remove it, then we need to go through a deprecation process, not least by marking it as a deprecated API in 8.x before having it vanish in 9.0. (I won't be sorry to see the complexity go, but I'm not sure I have all the implications in mind as yet...) Robert