diff options
author | andre <andre@FreeBSD.org> | 2007-04-04 14:39:49 +0000 |
---|---|---|
committer | andre <andre@FreeBSD.org> | 2007-04-04 14:39:49 +0000 |
commit | 37b70e01e6fd621bdd54d46df7cc80b7b5eacb7c (patch) | |
tree | 0cf6e08e19d9c170168c857e7e1bd45e29b31239 /sys/netinet/tcp_input.c | |
parent | 1b7b9ce89e71aa655fa0c0589ff9352b5100c6e7 (diff) | |
download | FreeBSD-src-37b70e01e6fd621bdd54d46df7cc80b7b5eacb7c.zip FreeBSD-src-37b70e01e6fd621bdd54d46df7cc80b7b5eacb7c.tar.gz |
In tcp_dooptions() skip over SACK options if it is a SYN segment.
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r-- | sys/netinet/tcp_input.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index e37b656..5277c46 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -2748,6 +2748,8 @@ tcp_dooptions(struct tcpopt *to, u_char *cp, int cnt, int flags) case TCPOPT_SACK: if (optlen <= 2 || (optlen - 2) % TCPOLEN_SACK != 0) continue; + if (flags & TO_SYN) + continue; to->to_flags |= TOF_SACK; to->to_nsacks = (optlen - 2) / TCPOLEN_SACK; to->to_sacks = cp + 2; |