freebsd-dev/sys/netinet
John Polstra 66e39adc7c Fix a bug (apparently very old) that can cause a TCP connection to
be dropped when it has an unusual traffic pattern.  For full details
as well as a test case that demonstrates the failure, see the
referenced PR.

Under certain circumstances involving the persist state, it is
possible for the receive side's tp->rcv_nxt to advance beyond its
tp->rcv_adv.  This causes (tp->rcv_adv - tp->rcv_nxt) to become
negative.  However, in the code affected by this fix, that difference
was interpreted as an unsigned number by max().  Since it was
negative, it was taken as a huge unsigned number.  The effect was
to cause the receiver to believe that its receive window had negative
size, thereby rejecting all received segments including ACKs.  As
the test case shows, this led to fruitless retransmissions and
eventually to a dropped connection.  Even connections using the
loopback interface could be dropped.  The fix substitutes the signed
imax() for the unsigned max() function.

PR:		closes kern/3998
Reviewed by:	davidg, fenner, wollman
1997-07-01 05:42:16 +00:00
..
libalias Create the alias library. This is currently only used by 1997-05-23 04:41:31 +00:00
fil.c Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
icmp_var.h
if_atm.c import Chuck Cranor's ATM driver 1997-05-09 07:48:14 +00:00
if_atm.h import Chuck Cranor's ATM driver 1997-05-09 07:48:14 +00:00
if_ether.c Don't send arp request for the ip address 0.0.0.0. 1997-05-14 16:39:52 +00:00
if_ether.h
if_fddi.h
igmp_var.h
igmp.c
igmp.h
in_cksum.c
in_hostcache.c Add for public examination the beginnings of the per-host cache support 1997-06-18 01:24:28 +00:00
in_hostcache.h Add for public examination the beginnings of the per-host cache support 1997-06-18 01:24:28 +00:00
in_pcb.c Break apart initialization of s and inp from the declarations in 1997-05-19 01:28:39 +00:00
in_pcb.h The long-awaited mega-massive-network-code- cleanup. Part I. 1997-04-27 20:01:29 +00:00
in_proto.c Connect the ipdivert div_usrreqs struct to the ip proto switch table 1997-05-25 06:09:23 +00:00
in_rmx.c
in_systm.h
in_var.h The long-awaited mega-massive-network-code- cleanup. Part I. 1997-04-27 20:01:29 +00:00
in.c The long-awaited mega-massive-network-code- cleanup. Part I. 1997-04-27 20:01:29 +00:00
in.h
ip_compat.h Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_divert.c Submitted by: Whistle Communications (archie Cobbs) 1997-06-02 05:02:37 +00:00
ip_fil.c Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_fil.h Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_frag.c Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_frag.h Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_ftp_pxy.c Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_fw.c make it compile with -Wall 1997-06-04 22:09:15 +00:00
ip_fw.h Submitted by: Whistle Communications (archie Cobbs) 1997-06-02 05:02:37 +00:00
ip_icmp.c submitted by: archie@whistle.com 1997-05-23 22:33:16 +00:00
ip_icmp.h
ip_input.c Submitted by: Whistle Communications (archie Cobbs) 1997-06-02 05:02:37 +00:00
ip_mroute.c
ip_mroute.h
ip_nat.c Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_nat.h Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_output.c Submitted by: Whistle Communications (archie Cobbs) 1997-06-02 05:02:37 +00:00
ip_proxy.c Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_proxy.h Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_state.c Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_state.h Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
ip_var.h Connect the ipdivert div_usrreqs struct to the ip proto switch table 1997-05-25 06:09:23 +00:00
ip.h
ipl.h Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
mln_ipl.c Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
raw_ip.c Disallow writing raw IP packets shorter than the IP header. 1997-05-22 20:52:56 +00:00
tcp_debug.c
tcp_debug.h
tcp_fsm.h
tcp_input.c Fix a bug (apparently very old) that can cause a TCP connection to 1997-07-01 05:42:16 +00:00
tcp_output.c
tcp_reass.c Fix a bug (apparently very old) that can cause a TCP connection to 1997-07-01 05:42:16 +00:00
tcp_seq.h
tcp_subr.c
tcp_timer.c
tcp_timer.h
tcp_timewait.c
tcp_usrreq.c The long-awaited mega-massive-network-code- cleanup. Part I. 1997-04-27 20:01:29 +00:00
tcp_var.h The long-awaited mega-massive-network-code- cleanup. Part I. 1997-04-27 20:01:29 +00:00
tcp.h
tcpip.h
udp_usrreq.c The long-awaited mega-massive-network-code- cleanup. Part I. 1997-04-27 20:01:29 +00:00
udp_var.h
udp.h