diff options
author | ps <ps@FreeBSD.org> | 2005-04-10 05:20:10 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2005-04-10 05:20:10 +0000 |
commit | ae82590cf6402be3c3976edc7a1cba852207a8c9 (patch) | |
tree | f4cf5c8dfc3a80372c140bc367dbd38ca3c9b5bb /sys/netinet/tcp_sack.c | |
parent | cb57694d7ff060186b47a73870d4a3541c88076e (diff) | |
download | FreeBSD-src-ae82590cf6402be3c3976edc7a1cba852207a8c9.zip FreeBSD-src-ae82590cf6402be3c3976edc7a1cba852207a8c9.tar.gz |
When the rightmost SACK block expands, rcv_lastsack should be updated.
(Fix for kern/78226).
Submitted by : Noritoshi Demizu <demizu at dd dot iij4u dot or dot jp>
Reviewed by : Mohan Srinivasan (mohans at yahoo-inc dot com),
Raja Mukerji (raja at moselle dot com).
Diffstat (limited to 'sys/netinet/tcp_sack.c')
-rw-r--r-- | sys/netinet/tcp_sack.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index c288da8..efe3bb6 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -463,6 +463,8 @@ tcp_sack_option(struct tcpcb *tp, struct tcphdr *th, u_char *cp, int optlen) tp->snd_numholes++; tcp_sack_globalholes++; } + if (SEQ_LT(tp->rcv_lastsack, sack.end)) + tp->rcv_lastsack = sack.end; } return (0); } |