[comp.protocols.tcp-ip] Possible Bug in 4.3 BSD TCP?

ggere@csi.UUCP (Gary M. Gere) (06/24/87)

We have run into what is apparently a bug in the 4.3 BSD UNIX tcp_output code,
and I am wondering if anyone else has run into this.

Situation: VAX-11/750 running 4.3 BSD UNIX (with all official Berkeley fixes
applied) and a workstation with a dumb unbuffered ethernet interface. Our
version of tcp_output.c is 7.2.1.1 (Berkeley) 3/28/87.

Observed Problem: A FIN is properly sent by the VAX to the workstation. The FIN
is not received by the workstation (not seen). When the FIN is retransmitted by
the VAX, the sequence number is decremented by one, the urgent bit is set, and
the urgent pointer is set to one. All subsequent retransmissions of this FIN by
the VAX have this same identical damage. The workstation never ACKs the damaged
FIN and never sees the FIN it is expecting; we hang in this state indefinately.

There is code in the tcp_output.c module to handle retransmission of FINs. It
advances the sequence number at first, and then if resending a FIN, it backs
the sequence number off. Further code to set the urgent bit exists if sequence
numbers appear damaged. 

My knowledge of whats going on is limited enough, and this code is complicated
(obscure) enough that before I brain damage our system with "obvious" fixes I
am hoping someone out there has seen this before and can help.

Thanks...
-- 

===============================================================================
Communications Solutions  2125 Hamilton Avenue  San Jose, Calif 95129
Gary M. Gere {bnrmtv,epimass,nsc}!csi!ggere 408/559-1118