summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_timer.c
diff options
context:
space:
mode:
authorjesper <jesper@FreeBSD.org>2001-05-31 19:24:49 +0000
committerjesper <jesper@FreeBSD.org>2001-05-31 19:24:49 +0000
commit7e194a24205e6329b62171398af48bf4835df3af (patch)
tree610a04d4ddfc47f7c304cf2f6966994b66efad06 /sys/netinet/tcp_timer.c
parent1b9cc31eccdf6521f0235995842836b803c9fa56 (diff)
downloadFreeBSD-src-7e194a24205e6329b62171398af48bf4835df3af.zip
FreeBSD-src-7e194a24205e6329b62171398af48bf4835df3af.tar.gz
Disable rfc1323 and rfc1644 TCP extensions if we havn't got
any response to our third SYN to work-around some broken terminal servers (most of which have hopefully been retired) that have bad VJ header compression code which trashes TCP segments containing unknown-to-them TCP options. PR: kern/1689 Submitted by: jesper Reviewed by: wollman MFC after: 2 weeks
Diffstat (limited to 'sys/netinet/tcp_timer.c')
-rw-r--r--sys/netinet/tcp_timer.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c
index 0a85cf8..a035989 100644
--- a/sys/netinet/tcp_timer.c
+++ b/sys/netinet/tcp_timer.c
@@ -388,6 +388,15 @@ tcp_timer_rexmt(xtp)
TCPT_RANGESET(tp->t_rxtcur, rexmt,
tp->t_rttmin, TCPTV_REXMTMAX);
/*
+ * Disable rfc1323 and rfc1644 if we havn't got any response to
+ * our third SYN to work-around some broken terminal servers
+ * (most of which have hopefully been retired) that have bad VJ
+ * header compression code which trashes TCP segments containing
+ * unknown-to-them TCP options.
+ */
+ if ((tp->t_state == TCPS_SYN_SENT) && (tp->t_rxtshift == 3))
+ tp->t_flags &= ~(TF_REQ_SCALE|TF_REQ_TSTMP|TF_REQ_CC);
+ /*
* If losing, let the lower level know and try for
* a better route. Also, if we backed off this far,
* our srtt estimate is probably bogus. Clobber it
OpenPOWER on IntegriCloud