diff options
author | ps <ps@FreeBSD.org> | 2000-02-28 21:18:21 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2000-02-28 21:18:21 +0000 |
commit | 8c1d813591c186e078f540e496caafbeaff0186d (patch) | |
tree | e6f97d130da38d7fe5895cddb4665bba579e82f9 /sys | |
parent | 31b82ccb0a6734e4db7341f3d8dc92c5404561b9 (diff) | |
download | FreeBSD-src-8c1d813591c186e078f540e496caafbeaff0186d.zip FreeBSD-src-8c1d813591c186e078f540e496caafbeaff0186d.tar.gz |
Limit the maximum permissible TCP window size to 65535 octets if
window scaling is disabled.
PR: kern/16914
Submitted by: Jayanth Vijayaraghavan <jayanth@yahoo-inc.com>
Reviewed by: wollman
Approved by: jkh
Diffstat (limited to 'sys')
-rw-r--r-- | sys/netinet/tcp_subr.c | 5 | ||||
-rw-r--r-- | sys/netinet/tcp_timewait.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index b15c7d1..ee62998 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -314,8 +314,11 @@ tcp_respond(tp, ipgen, th, m, ack, seq, flags) ipov = ipgen; if (tp) { - if (!(flags & TH_RST)) + if (!(flags & TH_RST)) { win = sbspace(&tp->t_inpcb->inp_socket->so_rcv); + if (win > (long)TCP_MAXWIN << tp->rcv_scale) + win = (long)TCP_MAXWIN << tp->rcv_scale; + } #ifdef INET6 if (isipv6) ro6 = &tp->t_inpcb->in6p_route; diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c index b15c7d1..ee62998 100644 --- a/sys/netinet/tcp_timewait.c +++ b/sys/netinet/tcp_timewait.c @@ -314,8 +314,11 @@ tcp_respond(tp, ipgen, th, m, ack, seq, flags) ipov = ipgen; if (tp) { - if (!(flags & TH_RST)) + if (!(flags & TH_RST)) { win = sbspace(&tp->t_inpcb->inp_socket->so_rcv); + if (win > (long)TCP_MAXWIN << tp->rcv_scale) + win = (long)TCP_MAXWIN << tp->rcv_scale; + } #ifdef INET6 if (isipv6) ro6 = &tp->t_inpcb->in6p_route; |