aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
diff options
context:
space:
mode:
authoriNPUTmice <daniel@gultsch.de>2014-11-15 12:37:09 +0100
committeriNPUTmice <daniel@gultsch.de>2014-11-15 15:34:12 +0100
commitcc4f3702a83b5f4d4d57aa66bf50c5ba3b96e72b (patch)
tree26b9bab0f9b275eeff353de203a648be11bf7936 /src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
parent4ab558715cc279515894d8ad28053716d3d61ad2 (diff)
made file transfers cancelable
Diffstat (limited to 'src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java')
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
index 791f4860..982fa964 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
@@ -28,6 +28,8 @@ public class JingleInbandTransport extends JingleTransport {
private boolean established = false;
+ private boolean connected = true;
+
private DownloadableFile file;
private JingleConnection connection;
@@ -42,7 +44,7 @@ public class JingleInbandTransport extends JingleTransport {
private OnIqPacketReceived onAckReceived = new OnIqPacketReceived() {
@Override
public void onIqPacketReceived(Account account, IqPacket packet) {
- if (packet.getType() == IqPacket.TYPE_RESULT) {
+ if (connected && packet.getType() == IqPacket.TYPE_RESULT) {
sendNextBlock();
}
}
@@ -64,7 +66,7 @@ public class JingleInbandTransport extends JingleTransport {
open.setAttribute("sid", this.sessionId);
open.setAttribute("stanza", "iq");
open.setAttribute("block-size", Integer.toString(this.blockSize));
-
+ this.connected = true;
this.account.getXmppConnection().sendIqPacket(iq,
new OnIqPacketReceived() {
@@ -116,12 +118,19 @@ public class JingleInbandTransport extends JingleTransport {
callback.onFileTransferAborted();
return;
}
- this.sendNextBlock();
+ if (this.connected) {
+ this.sendNextBlock();
+ }
} catch (NoSuchAlgorithmException e) {
callback.onFileTransferAborted();
}
}
+ @Override
+ public void disconnect() {
+ this.connected = false;
+ }
+
private void sendNextBlock() {
byte[] buffer = new byte[this.bufferSize];
try {
@@ -183,13 +192,14 @@ public class JingleInbandTransport extends JingleTransport {
if (payload.getName().equals("open")) {
if (!established) {
established = true;
+ connected = true;
this.account.getXmppConnection().sendIqPacket(
packet.generateRespone(IqPacket.TYPE_RESULT), null);
} else {
this.account.getXmppConnection().sendIqPacket(
packet.generateRespone(IqPacket.TYPE_ERROR), null);
}
- } else if (payload.getName().equals("data")) {
+ } else if (connected && payload.getName().equals("data")) {
this.receiveNextBlock(payload.getContent());
this.account.getXmppConnection().sendIqPacket(
packet.generateRespone(IqPacket.TYPE_RESULT), null);