diff options
Diffstat (limited to 'net/sctp/outqueue.c')
| -rw-r--r-- | net/sctp/outqueue.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index e5faa351aaad..30b710c54e64 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
| @@ -691,7 +691,8 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
| 691 | 691 | ||
| 692 | if (!new_transport) { | 692 | if (!new_transport) { |
| 693 | new_transport = asoc->peer.active_path; | 693 | new_transport = asoc->peer.active_path; |
| 694 | } else if (new_transport->state == SCTP_INACTIVE) { | 694 | } else if ((new_transport->state == SCTP_INACTIVE) || |
| 695 | (new_transport->state == SCTP_UNCONFIRMED)) { | ||
| 695 | /* If the chunk is Heartbeat or Heartbeat Ack, | 696 | /* If the chunk is Heartbeat or Heartbeat Ack, |
| 696 | * send it to chunk->transport, even if it's | 697 | * send it to chunk->transport, even if it's |
| 697 | * inactive. | 698 | * inactive. |
| @@ -848,7 +849,8 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
| 848 | */ | 849 | */ |
| 849 | new_transport = chunk->transport; | 850 | new_transport = chunk->transport; |
| 850 | if (!new_transport || | 851 | if (!new_transport || |
| 851 | new_transport->state == SCTP_INACTIVE) | 852 | ((new_transport->state == SCTP_INACTIVE) || |
| 853 | (new_transport->state == SCTP_UNCONFIRMED))) | ||
| 852 | new_transport = asoc->peer.active_path; | 854 | new_transport = asoc->peer.active_path; |
| 853 | 855 | ||
| 854 | /* Change packets if necessary. */ | 856 | /* Change packets if necessary. */ |
| @@ -1464,7 +1466,8 @@ static void sctp_check_transmitted(struct sctp_outq *q, | |||
| 1464 | /* Mark the destination transport address as | 1466 | /* Mark the destination transport address as |
| 1465 | * active if it is not so marked. | 1467 | * active if it is not so marked. |
| 1466 | */ | 1468 | */ |
| 1467 | if (transport->state == SCTP_INACTIVE) { | 1469 | if ((transport->state == SCTP_INACTIVE) || |
| 1470 | (transport->state == SCTP_UNCONFIRMED)) { | ||
| 1468 | sctp_assoc_control_transport( | 1471 | sctp_assoc_control_transport( |
| 1469 | transport->asoc, | 1472 | transport->asoc, |
| 1470 | transport, | 1473 | transport, |
