make jingle state transitions less error prone
This commit is contained in:
parent
63cc5f96ed
commit
8e42d0d39c
|
@ -71,6 +71,8 @@ public class JingleConnection implements Transferable {
|
||||||
private Element fileOffer;
|
private Element fileOffer;
|
||||||
private DownloadableFile file = null;
|
private DownloadableFile file = null;
|
||||||
|
|
||||||
|
private boolean proxyActivationFailed = false;
|
||||||
|
|
||||||
private String contentName;
|
private String contentName;
|
||||||
private String contentCreator;
|
private String contentCreator;
|
||||||
private Transport initialTransport;
|
private Transport initialTransport;
|
||||||
|
@ -175,6 +177,7 @@ public class JingleConnection implements Transferable {
|
||||||
@Override
|
@Override
|
||||||
public void failed() {
|
public void failed() {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": proxy activation failed");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": proxy activation failed");
|
||||||
|
proxyActivationFailed = true;
|
||||||
if (initiating()) {
|
if (initiating()) {
|
||||||
sendFallbackToIbb();
|
sendFallbackToIbb();
|
||||||
}
|
}
|
||||||
|
@ -700,6 +703,11 @@ public class JingleConnection implements Transferable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void receiveAccept(JinglePacket packet) {
|
private void receiveAccept(JinglePacket packet) {
|
||||||
|
if (responding()) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order session-accept (we were responding)");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this.mJingleStatus != JINGLE_STATUS_INITIATED) {
|
if (this.mJingleStatus != JINGLE_STATUS_INITIATED) {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order session-accept");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order session-accept");
|
||||||
respondToIqWithOutOfOrder(packet);
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
@ -909,6 +917,16 @@ public class JingleConnection implements Transferable {
|
||||||
|
|
||||||
|
|
||||||
private void receiveFallbackToIbb(JinglePacket packet) {
|
private void receiveFallbackToIbb(JinglePacket packet) {
|
||||||
|
if (initiating()) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order transport-replace (we were initiating)");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mJingleStatus != JINGLE_STATUS_ACCEPTED && !proxyActivationFailed) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order transport-replace");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": receiving fallback to ibb");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": receiving fallback to ibb");
|
||||||
final String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size");
|
final String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size");
|
||||||
if (receivedBlockSize != null) {
|
if (receivedBlockSize != null) {
|
||||||
|
@ -947,6 +965,16 @@ public class JingleConnection implements Transferable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void receiveTransportAccept(JinglePacket packet) {
|
private void receiveTransportAccept(JinglePacket packet) {
|
||||||
|
if (responding()) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order transport-accept (we were responding)");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.mJingleStatus != JINGLE_STATUS_ACCEPTED) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order transport-accept");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (packet.getJingleContent().hasIbbTransport()) {
|
if (packet.getJingleContent().hasIbbTransport()) {
|
||||||
final Element ibbTransport = packet.getJingleContent().ibbTransport();
|
final Element ibbTransport = packet.getJingleContent().ibbTransport();
|
||||||
final String receivedBlockSize = ibbTransport.getAttribute("block-size");
|
final String receivedBlockSize = ibbTransport.getAttribute("block-size");
|
||||||
|
@ -970,8 +998,6 @@ public class JingleConnection implements Transferable {
|
||||||
//might be receive instead if we are not initiating
|
//might be receive instead if we are not initiating
|
||||||
if (initiating()) {
|
if (initiating()) {
|
||||||
this.transport.connect(onIbbTransportConnected);
|
this.transport.connect(onIbbTransportConnected);
|
||||||
} else {
|
|
||||||
this.transport.receive(file, onFileTransmissionStatusChanged);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received invalid transport-accept");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received invalid transport-accept");
|
||||||
|
|
Loading…
Reference in a new issue