From 9cd6fa50972da7e012185e4ede49bc52609a2e81 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Tue, 3 Sep 2019 19:57:29 +0200 Subject: send fallback to ibb after proxy activation failed --- .../messenger/xmpp/jingle/JingleConnection.java | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java') diff --git a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java index baae498e3..33b7c6e46 100644 --- a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java +++ b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java @@ -178,7 +178,9 @@ public class JingleConnection implements Transferable { @Override public void failed() { Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": proxy activation failed"); - //TODO: when initiating send fallback to ibb + if (initiating()) { + sendFallbackToIbb(); + } } }; @@ -783,11 +785,11 @@ public class JingleConnection implements Transferable { mXmppConnectionService.sendIqPacket(account, activation, (account, response) -> { if (response.getType() != IqPacket.TYPE.RESULT) { Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": " + response.toString()); + sendProxyError(); onProxyActivated.failed(); - //TODO send proxy-error } else { - onProxyActivated.success(); sendProxyActivated(connection.getCandidate().getCid()); + onProxyActivated.success(); } }); } else { @@ -871,7 +873,7 @@ public class JingleConnection implements Transferable { private boolean receiveFallbackToIbb(JinglePacket packet) { - Log.d(Config.LOGTAG, "receiving fallback to ibb"); + Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": receiving fallback to ibb"); final String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size"); if (receivedBlockSize != null) { try { @@ -1059,14 +1061,23 @@ public class JingleConnection implements Transferable { } private void sendProxyActivated(String cid) { - JinglePacket packet = bootstrapPacket("transport-info"); - Content content = new Content(this.contentCreator, this.contentName); + final JinglePacket packet = bootstrapPacket("transport-info"); + final Content content = new Content(this.contentCreator, this.contentName); content.setTransportId(this.transportId); content.socks5transport().addChild("activated").setAttribute("cid", cid); packet.setContent(content); this.sendJinglePacket(packet); } + private void sendProxyError() { + final JinglePacket packet = bootstrapPacket("transport-info"); + final Content content = new Content(this.contentCreator, this.contentName); + content.setTransportId(this.transportId); + content.socks5transport().addChild("proxy-error"); + packet.setContent(content); + this.sendJinglePacket(packet); + } + private void sendCandidateUsed(final String cid) { JinglePacket packet = bootstrapPacket("transport-info"); Content content = new Content(this.contentCreator, this.contentName); -- cgit v1.2.3