On 31.08.2010 15:01, Michael Tüxen wrote:
On Aug 31, 2010, at 12:04 PM, Robert Watson wrote:
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.
>
sendto() is also used for SCTP SOCK_STREAMS and SOCK_SEQPACKET sockets...
sendto() will not be touched or modified. It's just that on a TCP socket
the tcp protocol will not perform an implied connect anymore. The only thing
that changes is TCP dropping a deprecated and experimental extension and
behaving like every other UNIXy OS.
sendto() will continue to work for UDP, SCTP and Domain sockets and whoever
else currently supports it, except TCP.
--
Andre
_______________________________________________
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"