summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2002-07-22 22:31:09 +0000
committerru <ru@FreeBSD.org>2002-07-22 22:31:09 +0000
commitcb7f1cefec456220dc1b02513d3740517addc49d (patch)
tree094f1c96fdc20559cf3ab4bffef78709cb6fd180 /sys/netinet
parent818d4f6499982187589d4c36d8c5b67e0f22a8e8 (diff)
downloadFreeBSD-src-cb7f1cefec456220dc1b02513d3740517addc49d.zip
FreeBSD-src-cb7f1cefec456220dc1b02513d3740517addc49d.tar.gz
Don't shrink socket buffers in tcp_mss(), application might have already
configured them with setsockopt(SO_*BUF), for RFC1323's scaled windows. PR: kern/11966 MFC after: 1 week
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/tcp_input.c6
-rw-r--r--sys/netinet/tcp_reass.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 64cbed9..431c049 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -2665,7 +2665,8 @@ tcp_mss(tp, offer)
bufsize = roundup(bufsize, mss);
if (bufsize > sb_max)
bufsize = sb_max;
- (void)sbreserve(&so->so_snd, bufsize, so, NULL);
+ if (bufsize > so->so_snd.sb_hiwat)
+ (void)sbreserve(&so->so_snd, bufsize, so, NULL);
}
tp->t_maxseg = mss;
@@ -2677,7 +2678,8 @@ tcp_mss(tp, offer)
bufsize = roundup(bufsize, mss);
if (bufsize > sb_max)
bufsize = sb_max;
- (void)sbreserve(&so->so_rcv, bufsize, so, NULL);
+ if (bufsize > so->so_rcv.sb_hiwat)
+ (void)sbreserve(&so->so_rcv, bufsize, so, NULL);
}
/*
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c
index 64cbed9..431c049 100644
--- a/sys/netinet/tcp_reass.c
+++ b/sys/netinet/tcp_reass.c
@@ -2665,7 +2665,8 @@ tcp_mss(tp, offer)
bufsize = roundup(bufsize, mss);
if (bufsize > sb_max)
bufsize = sb_max;
- (void)sbreserve(&so->so_snd, bufsize, so, NULL);
+ if (bufsize > so->so_snd.sb_hiwat)
+ (void)sbreserve(&so->so_snd, bufsize, so, NULL);
}
tp->t_maxseg = mss;
@@ -2677,7 +2678,8 @@ tcp_mss(tp, offer)
bufsize = roundup(bufsize, mss);
if (bufsize > sb_max)
bufsize = sb_max;
- (void)sbreserve(&so->so_rcv, bufsize, so, NULL);
+ if (bufsize > so->so_rcv.sb_hiwat)
+ (void)sbreserve(&so->so_rcv, bufsize, so, NULL);
}
/*
OpenPOWER on IntegriCloud