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>
