From owner-freebsd-current Mon Jan 15 13:55:29 1996 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id NAA12219 for current-outgoing; Mon, 15 Jan 1996 13:55:29 -0800 (PST) Received: from utrhcs.cs.utwente.nl (utrhcs.cs.utwente.nl [130.89.10.247]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id NAA12212 for ; Mon, 15 Jan 1996 13:55:24 -0800 (PST) Received: from myrtilos.cs.utwente.nl by utrhcs.cs.utwente.nl (SMI-8.6/csrelayMX-SVR4_1.2/RBINF) id WAA06505; Mon, 15 Jan 1996 22:54:30 +0100 Received: from curie.cs.utwente.nl by myrtilos.cs.utwente.nl (SMI-8.6/csrelay-Sol1.4/RB) id WAA25421; Mon, 15 Jan 1996 22:54:27 +0100 Received: from localhost by curie.cs.utwente.nl (SMI-8.6/SMI-SVR4) id WAA03108; Mon, 15 Jan 1996 22:54:25 +0100 To: Robert Sanders cc: freebsd-current@FreeBSD.ORG Subject: Re: finger problem going from 2.1R to -current In-reply-to: Your message of "Mon, 15 Jan 1996 15:17:30 EST." <199601152017.PAA28876@interbev.mindspring.com> Date: Mon, 15 Jan 1996 22:54:23 +0100 Message-ID: <3107.821742863@curie.cs.utwente.nl> From: Andras Olah Sender: owner-current@FreeBSD.ORG Precedence: bulk On Mon, 15 Jan 1996 15:17:30 EST, Robert Sanders wrote: > On Mon, 15 Jan 1996 04:14:01 EST, Andras Olah 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 (DF) > 15:13:16.608004 hrothgar.1081 > widow.finger: SFP 100905540:100905550(10) win 17520 (DF) > 15:13:40.608362 hrothgar.1081 > widow.finger: SFP 100905540:100905550(10) win 17520 (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,