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;
                }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to