Author: peter
Date: Tue Jan  7 23:01:33 2014
New Revision: 260419
URL: http://svnweb.freebsd.org/changeset/base/260419

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

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

Modified: stable/9/sys/netinet/tcp_input.c
==============================================================================
--- stable/9/sys/netinet/tcp_input.c    Tue Jan  7 23:01:05 2014        
(r260418)
+++ stable/9/sys/netinet/tcp_input.c    Tue Jan  7 23:01:33 2014        
(r260419)
@@ -2407,13 +2407,15 @@ tcp_do_segment(struct mbuf *m, struct tc
                hhook_run_tcp_est_in(tp, th, &to);
 
                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_INC(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.
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to