summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorps <ps@FreeBSD.org>2000-02-28 21:18:21 +0000
committerps <ps@FreeBSD.org>2000-02-28 21:18:21 +0000
commit8c1d813591c186e078f540e496caafbeaff0186d (patch)
treee6f97d130da38d7fe5895cddb4665bba579e82f9 /sys
parent31b82ccb0a6734e4db7341f3d8dc92c5404561b9 (diff)
downloadFreeBSD-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.c5
-rw-r--r--sys/netinet/tcp_timewait.c5
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;
OpenPOWER on IntegriCloud