Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 Jun 2010 16:09:12 +0000 (UTC)
From:      Randall Stewart <rrs@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r208875 - head/sys/netinet
Message-ID:  <201006061609.o56G9CdW089377@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rrs
Date: Sun Jun  6 16:09:12 2010
New Revision: 208875
URL: http://svn.freebsd.org/changeset/base/208875

Log:
  Fix a bug in the sctp_inpcb_free. Basically if the socket
  was setup to do an abortive close an association that was
  in the accept_queue could get stuck and never freed. Now
  we properly start the kill timer on the socket and turn
  off the flag (same thing we do for the graceful close method).
  MFC after:	1 week

Modified:
  head/sys/netinet/sctp_pcb.c

Modified: head/sys/netinet/sctp_pcb.c
==============================================================================
--- head/sys/netinet/sctp_pcb.c	Sun Jun  6 16:07:40 2010	(r208874)
+++ head/sys/netinet/sctp_pcb.c	Sun Jun  6 16:09:12 2010	(r208875)
@@ -3363,6 +3363,10 @@ sctp_inpcb_free(struct sctp_inpcb *inp, 
 	    asoc = nasoc) {
 		nasoc = LIST_NEXT(asoc, sctp_tcblist);
 		if (asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) {
+			if (asoc->asoc.state & SCTP_STATE_IN_ACCEPT_QUEUE) {
+				asoc->asoc.state &= ~SCTP_STATE_IN_ACCEPT_QUEUE;
+				sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, asoc, NULL);
+			}
 			cnt++;
 			continue;
 		}



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