SCTP: Uncomfirmed transports can't become Inactive
authorVlad Yasevich <vladislav.yasevich@hp.com>
Fri, 24 Aug 2007 10:30:25 +0000 (19:30 +0900)
committerVlad Yasevich <vladislav.yasevich@hp.com>
Thu, 30 Aug 2007 17:55:41 +0000 (13:55 -0400)
Do not set Unconfirmed transports to Inactive state.  This may
result in an inactive association being destroyed since we start
counting errors on "inactive" transports against the association.
This was found at the SCTP interop event.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
net/sctp/associola.c

index 498edb0cd4e5f7156cb98506304db1f48bcc8cef..2ad1caf1ea42577205a5a61f7e4494125542671b 100644 (file)
@@ -727,7 +727,12 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,
                break;
 
        case SCTP_TRANSPORT_DOWN:
-               transport->state = SCTP_INACTIVE;
+               /* if the transort was never confirmed, do not transition it
+                * to inactive state.
+                */
+               if (transport->state != SCTP_UNCONFIRMED)
+                       transport->state = SCTP_INACTIVE;
+
                spc_state = SCTP_ADDR_UNREACHABLE;
                break;