Date: Mon, 15 Jan 1996 22:54:23 +0100 From: Andras Olah <olah@cs.utwente.nl> To: Robert Sanders <rsanders@mindspring.com> Cc: freebsd-current@FreeBSD.ORG Subject: Re: finger problem going from 2.1R to -current Message-ID: <3107.821742863@curie.cs.utwente.nl> In-Reply-To: Your message of "Mon, 15 Jan 1996 15:17:30 EST." <199601152017.PAA28876@interbev.mindspring.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 15 Jan 1996 15:17:30 EST, Robert Sanders wrote: > On Mon, 15 Jan 1996 04:14:01 EST, Andras Olah <olah@cs.utwente.nl> said: > > > machines is caused by the use of T/TCP. Apparently some (buggy or > > at least non-conformant) TCP stacks have problems with T/TCP. > > AIX and Linux both have problems with it. Solaris copes fine. > [...] > It's short, so I'll just post it here. Both rfc1323 and rfc1644 are > set to 0 on my machine. > > 15:13:10.980335 hrothgar.1081 > widow.finger: SFP 100905540:100905550(10) win 17520 <mss 1460> (DF) > 15:13:16.608004 hrothgar.1081 > widow.finger: SFP 100905540:100905550(10) win 17520 <mss 1460> (DF) > 15:13:40.608362 hrothgar.1081 > widow.finger: SFP 100905540:100905550(10) win 17520 <mss 1460> (DF) > > AIX 4.1.2 doesn't seem to like packets with SYN and FIN that also > include data. > > For those of you that want to work around the problem, changing all > occurrences of MSG_EOF in src/usr.bin/finger/net.c to 0 should do it. > > -- Robert Paul Traina mentioned the same problem (sending of SYN,data,FIN even when rfc1644 is off) a few days ago. The real fix is a patch to sys/netinet/tcp_output.c to make our TCP more conservative when no extensions are used. I've included the patch below and plan to commit it, but I'm waiting for feedback from the networking guys because I couldn't try this patch on a current machine. On 2.1R it seems to do its job well. I'd welcome if some people could try that patch before I commit it. Andras *** tcp_output.c.orig Tue Dec 19 13:37:43 1995 --- tcp_output.c Thu Jan 11 11:38:00 1996 *************** *** 167,172 **** --- 167,185 ---- return 0; } + /* + * Be careful not to send data and/or FIN on SYN segments + * in cases when no CC option will be sent. + * This measure is needed to prevent interoperability problems + * with not fully conformant TCP implementations. + */ + if ((flags & TH_SYN) && + ((tp->t_flags & TF_NOOPT) || !(tp->t_flags & TF_REQ_CC) || + ((flags & TH_ACK) && !(tp->t_flags & TF_RCVD_CC)))) { + len = 0; + flags &= ~TH_FIN; + } + if (len < 0) { /* * If FIN has been sent but not acked,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3107.821742863>