Skip site navigation (1)Skip section navigation (2)
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>