diff options
Diffstat (limited to 'net/sctp/associola.c')
| -rw-r--r-- | net/sctp/associola.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 8472b8b349c4..abd51cef2413 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
| @@ -599,11 +599,12 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, | |||
| 599 | /* Check to see if this is a duplicate. */ | 599 | /* Check to see if this is a duplicate. */ |
| 600 | peer = sctp_assoc_lookup_paddr(asoc, addr); | 600 | peer = sctp_assoc_lookup_paddr(asoc, addr); |
| 601 | if (peer) { | 601 | if (peer) { |
| 602 | /* An UNKNOWN state is only set on transports added by | ||
| 603 | * user in sctp_connectx() call. Such transports should be | ||
| 604 | * considered CONFIRMED per RFC 4960, Section 5.4. | ||
| 605 | */ | ||
| 602 | if (peer->state == SCTP_UNKNOWN) { | 606 | if (peer->state == SCTP_UNKNOWN) { |
| 603 | if (peer_state == SCTP_ACTIVE) | 607 | peer->state = SCTP_ACTIVE; |
| 604 | peer->state = SCTP_ACTIVE; | ||
| 605 | if (peer_state == SCTP_UNCONFIRMED) | ||
| 606 | peer->state = SCTP_UNCONFIRMED; | ||
| 607 | } | 608 | } |
| 608 | return peer; | 609 | return peer; |
| 609 | } | 610 | } |
