aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
diff options
context:
space:
mode:
authoriNPUTmice <daniel@gultsch.de>2014-06-29 13:44:59 +0200
committeriNPUTmice <daniel@gultsch.de>2014-06-29 13:44:59 +0200
commitd58d428874d26636b8813a080051690672b638b3 (patch)
tree71958785d77a5443dd41dadd96b37ad20d448076 /src/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
parent8eedc1a57fbf79212028fed7e87fb36d6143e0d5 (diff)
more error handling for jingle connections
Diffstat (limited to 'src/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java')
-rw-r--r--src/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java35
1 files changed, 21 insertions, 14 deletions
diff --git a/src/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java b/src/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
index 7ecc5edf..b859e7c7 100644
--- a/src/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
+++ b/src/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
@@ -33,7 +33,7 @@ public class JingleInbandTransport extends JingleTransport {
private long remainingSize;
private MessageDigest digest;
- private OnFileTransmitted onFileTransmitted;
+ private OnFileTransmissionStatusChanged onFileTransmissionStatusChanged;
private OnIqPacketReceived onAckReceived = new OnIqPacketReceived() {
@Override
@@ -77,8 +77,8 @@ public class JingleInbandTransport extends JingleTransport {
}
@Override
- public void receive(JingleFile file, OnFileTransmitted callback) {
- this.onFileTransmitted = callback;
+ public void receive(JingleFile file, OnFileTransmissionStatusChanged callback) {
+ this.onFileTransmissionStatusChanged = callback;
this.file = file;
try {
this.digest = MessageDigest.getInstance("SHA-1");
@@ -86,27 +86,35 @@ public class JingleInbandTransport extends JingleTransport {
file.getParentFile().mkdirs();
file.createNewFile();
this.fileOutputStream = getOutputStream(file);
+ if (this.fileOutputStream==null) {
+ callback.onFileTransferAborted();
+ return;
+ }
this.remainingSize = file.getExpectedSize();
} catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
+ callback.onFileTransferAborted();
} catch (IOException e) {
- e.printStackTrace();
+ callback.onFileTransferAborted();
}
}
@Override
- public void send(JingleFile file, OnFileTransmitted callback) {
- this.onFileTransmitted = callback;
+ public void send(JingleFile file, OnFileTransmissionStatusChanged callback) {
+ this.onFileTransmissionStatusChanged = callback;
this.file = file;
try {
this.digest = MessageDigest.getInstance("SHA-1");
this.digest.reset();
fileInputStream = this.getInputStream(file);
+ if (fileInputStream==null) {
+ callback.onFileTransferAborted();
+ return;
+ }
this.sendNextBlock();
} catch (FileNotFoundException e) {
- e.printStackTrace();
+ callback.onFileTransferAborted();
} catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
+ callback.onFileTransferAborted();
}
}
@@ -117,7 +125,7 @@ public class JingleInbandTransport extends JingleTransport {
if (count == -1) {
file.setSha1Sum(CryptoHelper.bytesToHex(digest.digest()));
fileInputStream.close();
- this.onFileTransmitted.onFileTransmitted(file);
+ this.onFileTransmissionStatusChanged.onFileTransmitted(file);
} else {
this.digest.update(buffer);
String base64 = Base64.encodeToString(buffer, Base64.NO_WRAP);
@@ -134,8 +142,7 @@ public class JingleInbandTransport extends JingleTransport {
this.seq++;
}
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ this.onFileTransmissionStatusChanged.onFileTransferAborted();
}
}
@@ -154,10 +161,10 @@ public class JingleInbandTransport extends JingleTransport {
file.setSha1Sum(CryptoHelper.bytesToHex(digest.digest()));
fileOutputStream.flush();
fileOutputStream.close();
- this.onFileTransmitted.onFileTransmitted(file);
+ this.onFileTransmissionStatusChanged.onFileTransmitted(file);
}
} catch (IOException e) {
- e.printStackTrace();
+ this.onFileTransmissionStatusChanged.onFileTransferAborted();
}
}