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