From owner-svn-src-head@FreeBSD.ORG Sun Jun 6 16:09:12 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EFF1B1065674; Sun, 6 Jun 2010 16:09:12 +0000 (UTC) (envelope-from rrs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DFC3D8FC0A; Sun, 6 Jun 2010 16:09:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o56G9CA5089379; Sun, 6 Jun 2010 16:09:12 GMT (envelope-from rrs@svn.freebsd.org) Received: (from rrs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o56G9CdW089377; Sun, 6 Jun 2010 16:09:12 GMT (envelope-from rrs@svn.freebsd.org) Message-Id: <201006061609.o56G9CdW089377@svn.freebsd.org> From: Randall Stewart Date: Sun, 6 Jun 2010 16:09:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208875 - head/sys/netinet X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Jun 2010 16:09:13 -0000 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; }