From 90e669313ef12a5109228913eda0948b92b4df8e Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 1 Sep 2019 21:41:28 +0200 Subject: [PATCH] send fallback to ibb after proxy activation failed --- .../xmpp/jingle/JingleConnection.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java index 7e48ad666..a470ce3af 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java @@ -172,7 +172,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(); + } } }; @@ -774,11 +776,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 { @@ -862,7 +864,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 { @@ -1050,14 +1052,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);