diff options
Diffstat (limited to 'net/sctp')
-rw-r--r-- | net/sctp/associola.c | 6 | ||||
-rw-r--r-- | net/sctp/sm_sideeffect.c | 2 |
2 files changed, 8 insertions, 0 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 7eed77a39d0d..8e755ebff3b8 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
@@ -512,7 +512,13 @@ void sctp_assoc_set_primary(struct sctp_association *asoc, | |||
512 | * to this destination address earlier. The sender MUST set | 512 | * to this destination address earlier. The sender MUST set |
513 | * CYCLING_CHANGEOVER to indicate that this switch is a | 513 | * CYCLING_CHANGEOVER to indicate that this switch is a |
514 | * double switch to the same destination address. | 514 | * double switch to the same destination address. |
515 | * | ||
516 | * Really, only bother is we have data queued or outstanding on | ||
517 | * the association. | ||
515 | */ | 518 | */ |
519 | if (!asoc->outqueue.outstanding_bytes && !asoc->outqueue.out_qlen) | ||
520 | return; | ||
521 | |||
516 | if (transport->cacc.changeover_active) | 522 | if (transport->cacc.changeover_active) |
517 | transport->cacc.cycling_changeover = changeover; | 523 | transport->cacc.cycling_changeover = changeover; |
518 | 524 | ||
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 8674d4919556..eda4fe783be5 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c | |||
@@ -1418,6 +1418,8 @@ static int sctp_cmd_interpreter(sctp_event_t event_type, | |||
1418 | asoc->init_last_sent_to = t; | 1418 | asoc->init_last_sent_to = t; |
1419 | chunk->transport = t; | 1419 | chunk->transport = t; |
1420 | t->init_sent_count++; | 1420 | t->init_sent_count++; |
1421 | /* Set the new transport as primary */ | ||
1422 | sctp_assoc_set_primary(asoc, t); | ||
1421 | break; | 1423 | break; |
1422 | 1424 | ||
1423 | case SCTP_CMD_INIT_RESTART: | 1425 | case SCTP_CMD_INIT_RESTART: |