muller@sdcc3.UUCP (Keith Muller) (01/18/85)
ed /tmp/timescript. rcp timescript remotemach:/tmp/timescript 3) run the following rsh remotemach -n /tmp/timescript 4) only the first echo will print. while the sleep is running the virtual stream will be shut down. BOTH echos should print. Fix: The following posted bug fix: >From: mike@BRL-VGR.ARPA >Newsgroups: net.unix-wizards >Subject: Tune TCP max seg size, source correct local addresses. >Message-ID: <13000@sri-arpa.UUCP> >Date: Fri, 12-Oct-84 00:14:54 PDT >Date-Received: Mon, 15-Oct-84 12:10:51 PDT >Lines: 384 > >From: Mike Muuss <mike@BRL-VGR.ARPA> > >Index: /sys/netinet/tcp_input.c 4.2BSD Fix > >Description: > >1) Tune TCP max segment size based upon IP interface MTU. <deleted lines - muller> >*************** /sys/netinet/tcp_input.c <deleted lines - muller> >*** 530,535 > if (so->so_state & SS_CANTRCVMORE) soisdisconnected(so); > tp->t_state = TCPS_FIN_WAIT_2; > } > break; >--- 536,542 ----- > if (so->so_state & SS_CANTRCVMORE) > soisdisconnected(so); > tp->t_state = TCPS_FIN_WAIT_2; >+ tp->t_timer[TCPT_2MSL] = 2 * TCPTV_MSL; > } > break; The addition of the line marked with a "+" seems to be an attempt to fix TCP connections that were hanging in the FIN_WAIT_2 state. This fix not only violates the TCP specs but even worse causes half closed connections to suddenly abort even though the open half is still transferring data (such as the rsh script shown above). This will only happen on half open connections that last longer than 2*TCPTV_MSL. The rest of the fix from muss@brl is excellent and should be installed. Just do not add the "+" marked line: tp->t_timer[TCPT_2MSL] = 2 * TCPTV_MSL; to netinet/tcp_input.c Keith Muller University of California Academic Computer Center ucbvax!sdcsvax!muller (619) 452-6090