Commit fbdf501c authored by Vlad Yasevich's avatar Vlad Yasevich

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: default avatarFrank Schuster <frank.schuster01@web.de>
Signed-off-by: default avatarVlad Yasevich <vladislav.yasevich@hp.com>
parent bc4f841a
...@@ -762,7 +762,8 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, ...@@ -762,7 +762,8 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
asoc->peer.retran_path = peer; 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; asoc->peer.retran_path = peer;
} }
...@@ -1318,7 +1319,7 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc) ...@@ -1318,7 +1319,7 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc)
/* Keep track of the next transport in case /* Keep track of the next transport in case
* we don't find any active transport. * we don't find any active transport.
*/ */
if (!next) if (t->state != SCTP_UNCONFIRMED && !next)
next = t; next = t;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment