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 {
>

Reply via email to