Date: Wed, 27 Apr 2016 02:04:50 +0000 From: "sepherosa_gmail.com (Sepherosa Ziehau)" <phabric-noreply@FreeBSD.org> To: freebsd-net@freebsd.org Subject: [Differential] D5872: tcp: Don't prematurely drop receiving-only connections Message-ID: <af705a28c77926c0763ef92b314b0ba6@localhost.localdomain> In-Reply-To: <differential-rev-PHID-DREV-5vu7wrfibtoing77xfvt-req@FreeBSD.org> References: <differential-rev-PHID-DREV-5vu7wrfibtoing77xfvt-req@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] sepherosa_gmail.com updated the summary for this revision. sepherosa_gmail.com updated this revision to Diff 15642. CHANGES SINCE LAST UPDATE https://reviews.freebsd.org/D5872?vs=14968&id=15642 REVISION DETAIL https://reviews.freebsd.org/D5872 AFFECTED FILES sys/netinet/tcp_output.c CHANGE DETAILS diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -1545,9 +1545,10 @@ tp->t_softerror = error; return (error); case ENOBUFS: - if (!tcp_timer_active(tp, TT_REXMT) && + if ((len > 0 || (flags & (TH_SYN | TH_FIN))) && + !tcp_timer_active(tp, TT_REXMT) && !tcp_timer_active(tp, TT_PERSIST)) - tcp_timer_activate(tp, TT_REXMT, tp->t_rxtcur); + panic("neither rexmt nor persist timer is set"); tp->snd_cwnd = tp->t_maxseg; return (0); case EMSGSIZE: EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: sepherosa_gmail.com, network, glebius, adrian, delphij, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com, freebsd-net-list, lstewart, hiren, jtl, transport Cc: gnn, mike-karels.net, jtl [-- Attachment #2 --] diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -1545,9 +1545,10 @@ tp->t_softerror = error; return (error); case ENOBUFS: - if (!tcp_timer_active(tp, TT_REXMT) && + if ((len > 0 || (flags & (TH_SYN | TH_FIN))) && + !tcp_timer_active(tp, TT_REXMT) && !tcp_timer_active(tp, TT_PERSIST)) - tcp_timer_activate(tp, TT_REXMT, tp->t_rxtcur); + panic("neither rexmt nor persist timer is set"); tp->snd_cwnd = tp->t_maxseg; return (0); case EMSGSIZE:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?af705a28c77926c0763ef92b314b0ba6>
