aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorJesper Skriver <jesper@FreeBSD.org>2001-05-31 19:24:49 +0000
committerJesper Skriver <jesper@FreeBSD.org>2001-05-31 19:24:49 +0000
commit7ceb7783663297e0658ee63c580ac15d2df0bf1c (patch)
tree8df962a5ca90350ba538e18b401f8f1473d91f51 /sys
parent80cbb3c13a61ed76cba2ced79f37638094b78af8 (diff)
downloadsrc-7ceb7783663297e0658ee63c580ac15d2df0bf1c.tar.gz
src-7ceb7783663297e0658ee63c580ac15d2df0bf1c.zip
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
Notes
Notes: svn path=/head/; revision=77539
Diffstat (limited to 'sys')
-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 0a85cf832e95..a0359897c627 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