1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-24 11:29:10 +00:00
freebsd/sys/netinet
Matthew Dillon fa55172bc0 Guido reported an interesting bug where an FTP connection between a
Windows 2000 box and a FreeBSD box could stall.  The problem turned out
to be a timestamp reply bug in the W2K TCP stack.  FreeBSD sends a
timestamp with the SYN, W2K returns a timestamp of 0 in the SYN+ACK
causing FreeBSD to calculate an insane SRTT and RTT, resulting in
a maximal retransmit timeout (60 seconds).  If there is any packet
loss on the connection for the first six or so packets the retransmit
case may be hit (the window will still be too small for fast-retransmit),
causing a 60+ second pause.  The W2K box gives up and closes the
connection.

This commit works around the W2K bug.

15:04:59.374588 FREEBSD.20 > W2K.1036: S 1420807004:1420807004(0) win 65535 <mss 1460,nop,wscale 2,nop,nop,timestamp 188297344 0> (DF) [tos 0x8]
15:04:59.377558 W2K.1036 > FREEBSD.20: S 4134611565:4134611565(0) ack 1420807005 win 17520 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0> (DF)

Bug reported by: Guido van Rooij <guido@gvr.org>
2002-09-17 22:21:37 +00:00
..
libalias
accf_data.c
accf_http.c
icmp6.h
icmp_var.h
if_atm.c
if_atm.h
if_ether.c
if_ether.h
igmp_var.h
igmp.c
igmp.h
in_cksum.c
in_gif.c
in_gif.h
in_pcb.c
in_pcb.h Fixed namespace pollution in uma changes: 2002-09-05 19:48:52 +00:00
in_proto.c Add a new gre(4) driver, which could be used to create GRE (RFC1701) 2002-09-06 17:12:50 +00:00
in_rmx.c
in_systm.h
in_var.h
in.c
in.h Add in_hosteq() and in_nullhost() macros to make life of developers 2002-09-04 09:55:50 +00:00
ip6.h
ip_divert.c
ip_dummynet.c
ip_dummynet.h
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_flow.c
ip_flow.h
ip_fw2.c
ip_fw.c
ip_fw.h
ip_gre.c Remove __RCSID(). 2002-09-17 11:31:41 +00:00
ip_gre.h Add a new gre(4) driver, which could be used to create GRE (RFC1701) 2002-09-06 17:12:50 +00:00
ip_icmp.c
ip_icmp.h
ip_id.c
ip_input.c Explicitly clear M_FRAG flag on a mbuf with the last fragment to unbreak 2002-09-17 11:20:02 +00:00
ip_mroute.c Since from now on encap_input() also catches IPPROTO_MOBILE and IPPROTO_GRE 2002-09-09 09:36:47 +00:00
ip_mroute.h
ip_output.c In rare cases when there is no room for ip options ip_insertoptions() 2002-09-17 11:13:04 +00:00
ip_var.h
ip.h
ipprotosw.h
raw_ip.c
tcp_debug.c
tcp_debug.h
tcp_fsm.h
tcp_input.c Guido reported an interesting bug where an FTP connection between a 2002-09-17 22:21:37 +00:00
tcp_output.c Tempary fix for inet6. The final fix is to change in6_pcbnotify to take pcbinfo instead 2002-09-17 03:19:43 +00:00
tcp_reass.c Guido reported an interesting bug where an FTP connection between a 2002-09-17 22:21:37 +00:00
tcp_seq.h
tcp_subr.c
tcp_syncache.c
tcp_timer.c Include <sys/mutex.h> and its prerequisite <sys/lock.h> instead of depending 2002-09-05 15:33:30 +00:00
tcp_timer.h
tcp_timewait.c
tcp_usrreq.c
tcp_var.h
tcp.h
tcpip.h
udp_usrreq.c
udp_var.h
udp.h