diff options
author | qingli <qingli@FreeBSD.org> | 2006-02-23 21:14:34 +0000 |
---|---|---|
committer | qingli <qingli@FreeBSD.org> | 2006-02-23 21:14:34 +0000 |
commit | 2460d0002143524f8e136a911d7eece91b451d90 (patch) | |
tree | ba9269e3b43a380565f17f26e41521f129e39b59 /sys/netinet/tcp_output.c | |
parent | c5c882e144dffffbf4062f6725b10fa9a7c55c1a (diff) | |
download | FreeBSD-src-2460d0002143524f8e136a911d7eece91b451d90.zip FreeBSD-src-2460d0002143524f8e136a911d7eece91b451d90.tar.gz |
This patch fixes the problem where the current TCP code can not handle
simultaneous open. Both the bug and the patch were verified using the
ANVL test suite.
PR: kern/74935
Submitted by: qingli (before I became committer)
Reviewed by: andre
MFC after: 5 days
Diffstat (limited to 'sys/netinet/tcp_output.c')
-rw-r--r-- | sys/netinet/tcp_output.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index f68c2d9..ead2c1a 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -338,7 +338,8 @@ after_sack_rexmit: * know that foreign host supports TAO, suppress sending segment. */ if ((flags & TH_SYN) && SEQ_GT(tp->snd_nxt, tp->snd_una)) { - flags &= ~TH_SYN; + if (tp->t_state != TCPS_SYN_RECEIVED) + flags &= ~TH_SYN; off--, len++; } |