diff options
| -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 7eed77a39d0..8e755ebff3b 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 8674d491955..eda4fe783be 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: |
