Makes sense to me. Others?
On Tue, Jul 5, 2016 at 4:08 AM, Simon Mages <mages.si...@googlemail.com> wrote: > At the moment the buffersize will be set to the default even if the > current value > is smaller. > > The following diff fixes this problem. > > Index: netinet/tcp_usrreq.c > =================================================================== > RCS file: /cvs/src/sys/netinet/tcp_usrreq.c,v > retrieving revision 1.131 > diff -u -p -u -p -r1.131 tcp_usrreq.c > --- netinet/tcp_usrreq.c 18 Jun 2016 10:36:13 -0000 1.131 > +++ netinet/tcp_usrreq.c 5 Jul 2016 09:26:24 -0000 > @@ -979,10 +979,11 @@ tcp_update_sndspace(struct tcpcb *tp) > struct socket *so = tp->t_inpcb->inp_socket; > u_long nmax; > > - if (sbchecklowmem()) > + if (sbchecklowmem()) { > /* low on memory try to get rid of some */ > - nmax = tcp_sendspace; > - else if (so->so_snd.sb_wat != tcp_sendspace) > + if (so->so_snd.sb_hiwat < nmax) > + nmax = tcp_sendspace; > + } else if (so->so_snd.sb_wat != tcp_sendspace) > /* user requested buffer size, auto-scaling disabled */ > nmax = so->so_snd.sb_wat; > else > @@ -1017,10 +1018,11 @@ tcp_update_rcvspace(struct tcpcb *tp) > struct socket *so = tp->t_inpcb->inp_socket; > u_long nmax = so->so_rcv.sb_hiwat; > > - if (sbchecklowmem()) > + if (sbchecklowmem()) { > /* low on memory try to get rid of some */ > - nmax = tcp_recvspace; > - else if (so->so_rcv.sb_wat != tcp_recvspace) > + if (tcp_recvspace < nmax) > + nmax = tcp_recvspace; > + } else if (so->so_rcv.sb_wat != tcp_recvspace) > /* user requested buffer size, auto-scaling disabled */ > nmax = so->so_rcv.sb_wat; > else { >