svn commit: r208875 - head/sys/netinet

Randall Stewart rrs at FreeBSD.org
Sun Jun 6 16:09:13 UTC 2010


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;
 		}


More information about the svn-src-all mailing list