Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Jan 2014 23:02:50 +0000 (UTC)
From:      Peter Wemm <peter@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r260421 - stable/7/sys/netinet
Message-ID:  <201401072302.s07N2o8E042216@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: peter
Date: Tue Jan  7 23:02:50 2014
New Revision: 260421
URL: http://svnweb.freebsd.org/changeset/base/260421

Log:
  MFC r258821 - fix tcp simultaneous close
  
  PR:             kern/99188

Modified:
  stable/7/sys/netinet/tcp_input.c

Modified: stable/7/sys/netinet/tcp_input.c
==============================================================================
--- stable/7/sys/netinet/tcp_input.c	Tue Jan  7 23:02:13 2014	(r260420)
+++ stable/7/sys/netinet/tcp_input.c	Tue Jan  7 23:02:50 2014	(r260421)
@@ -1751,13 +1751,15 @@ tcp_do_segment(struct mbuf *m, struct tc
 		     !TAILQ_EMPTY(&tp->snd_holes)))
 			tcp_sack_doack(tp, &to, th->th_ack);
 		if (SEQ_LEQ(th->th_ack, tp->snd_una)) {
-			if (tlen == 0 && tiwin == tp->snd_wnd) {
+			if (tlen == 0 && tiwin == tp->snd_wnd &&
+			    !(thflags & TH_FIN)) {
 				tcpstat.tcps_rcvdupack++;
 				/*
 				 * If we have outstanding data (other than
 				 * a window probe), this is a completely
 				 * duplicate ack (ie, window info didn't
-				 * change), the ack is the biggest we've
+				 * change and FIN isn't set),
+				 * the ack is the biggest we've
 				 * seen and we've seen exactly our rexmt
 				 * threshhold of them, assume a packet
 				 * has been dropped and retransmit it.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401072302.s07N2o8E042216>