diff options
| author | Paul Saab <ps@FreeBSD.org> | 2005-02-27 20:39:04 +0000 |
|---|---|---|
| committer | Paul Saab <ps@FreeBSD.org> | 2005-02-27 20:39:04 +0000 |
| commit | 8291294024cbe743b2d0dd60c6307c96ca053df9 (patch) | |
| tree | 4e3f456407170c887e157c1bf94eb8f559cf532d | |
| parent | edc431123ec58e73b288993dcaa279bfa6eca9f8 (diff) | |
Notes
| -rw-r--r-- | sys/netinet/tcp_sack.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index afedbdf3bf38..31d69ebd8338 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -301,6 +301,9 @@ tcp_sack_option(struct tcpcb *tp, struct tcphdr *th, u_char *cp, int optlen) /* Note: TCPOLEN_SACK must be 2*sizeof(tcp_seq) */ if (optlen <= 2 || (optlen - 2) % TCPOLEN_SACK != 0) return (1); + /* If ack is outside window, ignore the SACK options */ + if (SEQ_LT(th->th_ack, tp->snd_una) || SEQ_GT(th->th_ack, tp->snd_max)) + return (1); tmp_cp = cp + 2; tmp_olen = optlen - 2; tcpstat.tcps_sack_rcv_blocks++; |
