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>