diff options
author | ru <ru@FreeBSD.org> | 2002-07-22 22:31:09 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2002-07-22 22:31:09 +0000 |
commit | cb7f1cefec456220dc1b02513d3740517addc49d (patch) | |
tree | 094f1c96fdc20559cf3ab4bffef78709cb6fd180 /sys/netinet | |
parent | 818d4f6499982187589d4c36d8c5b67e0f22a8e8 (diff) | |
download | FreeBSD-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.c | 6 | ||||
-rw-r--r-- | sys/netinet/tcp_reass.c | 6 |
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); } /* |