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
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to