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"