From owner-svn-src-projects@FreeBSD.ORG Tue Oct 7 13:18:29 2014 Return-Path: <owner-svn-src-projects@FreeBSD.ORG> Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 09108E93; Tue, 7 Oct 2014 13:18:29 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E9829D98; Tue, 7 Oct 2014 13:18:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s97DISVZ081943; Tue, 7 Oct 2014 13:18:28 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s97DISu9081942; Tue, 7 Oct 2014 13:18:28 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201410071318.s97DISu9081942@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff <glebius@FreeBSD.org> Date: Tue, 7 Oct 2014 13:18:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r272687 - projects/sendfile/sys/netinet X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" <svn-src-projects.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-projects>, <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/> List-Post: <mailto:svn-src-projects@freebsd.org> List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, <mailto:svn-src-projects-request@freebsd.org?subject=subscribe> X-List-Received-Date: Tue, 07 Oct 2014 13:18:29 -0000 Author: glebius Date: Tue Oct 7 13:18:28 2014 New Revision: 272687 URL: https://svnweb.freebsd.org/changeset/base/272687 Log: Fix three critical bugs when sbavail() was used in place of sbused(), and one non-critical. The critical ones led to FIN bit sent before remainer of data. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: projects/sendfile/sys/netinet/tcp_output.c Modified: projects/sendfile/sys/netinet/tcp_output.c ============================================================================== --- projects/sendfile/sys/netinet/tcp_output.c Tue Oct 7 13:08:52 2014 (r272686) +++ projects/sendfile/sys/netinet/tcp_output.c Tue Oct 7 13:18:28 2014 (r272687) @@ -322,7 +322,7 @@ after_sack_rexmit: * to send then the probe will be the FIN * itself. */ - if (off < sbavail(&so->so_snd)) + if (off < sbused(&so->so_snd)) flags &= ~TH_FIN; sendwin = 1; } else { @@ -503,11 +503,11 @@ after_sack_rexmit: tso = 1; if (sack_rxmit) { - if (SEQ_LT(p->rxmit + len, tp->snd_una + sbavail(&so->so_snd))) + if (SEQ_LT(p->rxmit + len, tp->snd_una + sbused(&so->so_snd))) flags &= ~TH_FIN; } else { if (SEQ_LT(tp->snd_nxt + len, tp->snd_una + - sbavail(&so->so_snd))) + sbused(&so->so_snd))) flags &= ~TH_FIN; } @@ -979,7 +979,7 @@ send: * give data to the user when a buffer fills or * a PUSH comes in.) */ - if (off + len == sbavail(&so->so_snd)) + if (off + len == sbused(&so->so_snd)) flags |= TH_PUSH; SOCKBUF_UNLOCK(&so->so_snd); } else {