sctp: Do no select unconfirmed transports for retransmissions
An unconfirmed transport is one that we have not been able to reach since the beginning. There is no point in trying to retrasnmit data on those transports. Also, the specification forbids it due to security issues. Reported-by: Frank Schuster <frank.schuster01@web.de> Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
This commit is contained in:
Родитель
bc4f841a05
Коммит
fbdf501c93
|
@ -762,7 +762,8 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
|
|||
asoc->peer.retran_path = peer;
|
||||
}
|
||||
|
||||
if (asoc->peer.active_path == asoc->peer.retran_path) {
|
||||
if (asoc->peer.active_path == asoc->peer.retran_path &&
|
||||
peer->state != SCTP_UNCONFIRMED) {
|
||||
asoc->peer.retran_path = peer;
|
||||
}
|
||||
|
||||
|
@ -1318,7 +1319,7 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc)
|
|||
/* Keep track of the next transport in case
|
||||
* we don't find any active transport.
|
||||
*/
|
||||
if (!next)
|
||||
if (t->state != SCTP_UNCONFIRMED && !next)
|
||||
next = t;
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче