Fix candidate selection for equal priority
XEP-0260 states that the candidate selected (offered) by the initiator wins, not the one that was chosen by the initiator (i.e. offered by the responder).
This commit is contained in:
parent
34d7b5f515
commit
6083f446b4
|
@ -720,7 +720,7 @@ public class Session {
|
||||||
.put_node(new StanzaNode.build("text", NS_URI)
|
.put_node(new StanzaNode.build("text", NS_URI)
|
||||||
.put_node(new StanzaNode.text(error.message))
|
.put_node(new StanzaNode.text(error.message))
|
||||||
);
|
);
|
||||||
terminate(reason, "transport error: $(error.message)");
|
terminate(reason, @"transport error: $(error.message)");
|
||||||
}
|
}
|
||||||
public void on_connection_close() {
|
public void on_connection_close() {
|
||||||
if (terminate_on_connection_close) {
|
if (terminate_on_connection_close) {
|
||||||
|
|
|
@ -332,8 +332,9 @@ class Parameters : Jingle.TransportParameters, Object {
|
||||||
} else if (local.priority > remote.priority) {
|
} else if (local.priority > remote.priority) {
|
||||||
remote_wins = false;
|
remote_wins = false;
|
||||||
} else {
|
} else {
|
||||||
// equal priority -> XEP-0260 says that the initiator wins
|
// equal priority -> XEP-0260 says that the candidate offered
|
||||||
remote_wins = role != Jingle.Role.INITIATOR;
|
// by the initiator wins, so the one that the remote chose
|
||||||
|
remote_wins = role == Jingle.Role.INITIATOR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue