diff options
author | Christian Schneppe <christian@pix-art.de> | 2017-01-25 19:46:45 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2017-01-25 19:46:45 +0100 |
commit | 09218b3c500d72d7c4af3fd9e6bf7a9c56627ce6 (patch) | |
tree | 2f2fa95995d4db0f40c7001d2f62c287c7c63783 /src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java | |
parent | c1a3c789a75949374a5444ba5b66302c871bf53e (diff) |
fixed some issues around ibb
Diffstat (limited to '')
-rw-r--r-- | src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java | 49 |
1 files changed, 33 insertions, 16 deletions
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 c95359663..83c28ff5d 100644 --- a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java +++ b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleConnection.java @@ -760,7 +760,7 @@ public class JingleConnection implements Transferable { } private void sendFallbackToIbb() { - Log.d(Config.LOGTAG, "sending fallback to ibb"); + Log.d(Config.LOGTAG, account.getJid().toBareJid()+ ": sending fallback to ibb"); JinglePacket packet = this.bootstrapPacket("transport-replace"); Content content = new Content(this.contentCreator, this.contentName); this.transportId = this.mJingleConnectionManager.nextRandomId(); @@ -771,6 +771,18 @@ public class JingleConnection implements Transferable { this.sendJinglePacket(packet); } + OnTransportConnected onIbbTransportConnected = new OnTransportConnected() { + @Override + public void failed() { + Log.d(Config.LOGTAG, "ibb open failed"); + } + + @Override + public void established() { + JingleConnection.this.transport.send(file, onFileTransmissionSatusChanged); + } + }; + private boolean receiveFallbackToIbb(JinglePacket packet) { Log.d(Config.LOGTAG, "receiving fallack to ibb"); String receivedBlockSize = packet.getJingleContent().ibbTransport() @@ -783,13 +795,25 @@ public class JingleConnection implements Transferable { } this.transportId = packet.getJingleContent().getTransportId(); this.transport = new JingleInbandTransport(this, this.transportId, this.ibbBlockSize); - this.transport.receive(file, onFileTransmissionSatusChanged); JinglePacket answer = bootstrapPacket("transport-accept"); Content content = new Content("initiator", "a-file-offer"); content.setTransportId(this.transportId); content.ibbTransport().setAttribute("block-size", this.ibbBlockSize); answer.setContent(content); - this.sendJinglePacket(answer); + if (initiator.equals(account.getJid())) { + this.sendJinglePacket(answer, new OnIqPacketReceived() { + @Override + public void onIqPacketReceived(Account account, IqPacket packet) { + if (packet.getType() == IqPacket.TYPE.RESULT) { + Log.d(Config.LOGTAG, account.getJid().toBareJid() + " recipient ACKed our transport-accept. creating ibb"); + transport.connect(onIbbTransportConnected); + } + } + }); + } else { + this.transport.receive(file, onFileTransmissionSatusChanged); + this.sendJinglePacket(answer); + } return true; } @@ -804,19 +828,12 @@ public class JingleConnection implements Transferable { } } this.transport = new JingleInbandTransport(this, this.transportId, this.ibbBlockSize); - this.transport.connect(new OnTransportConnected() { - - @Override - public void failed() { - Log.d(Config.LOGTAG, "ibb open failed"); - } - - @Override - public void established() { - JingleConnection.this.transport.send(file, - onFileTransmissionSatusChanged); - } - }); + //might be receive instead if we are not initiating + if (initiator.equals(account.getJid())) { + this.transport.connect(onIbbTransportConnected); + } else { + this.transport.receive(file, onFileTransmissionSatusChanged); + } return true; } else { return false; |