diff options
author | iNPUTmice <daniel@gultsch.de> | 2014-07-03 22:55:20 +0200 |
---|---|---|
committer | iNPUTmice <daniel@gultsch.de> | 2014-07-03 22:55:20 +0200 |
commit | 363682065d6874cf4549316cbc3ae46194e08be4 (patch) | |
tree | ac3ee6e0ca10d869c000496607f2a0458521dea3 | |
parent | f33d2497f85581b6b7e13fa1f3e088520227b346 (diff) |
added timeout to jingle socket
-rw-r--r-- | src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java | 17 | ||||
-rw-r--r-- | src/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java | 2 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java index 508fe95cd..1f2871944 100644 --- a/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java +++ b/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java @@ -99,6 +99,7 @@ public class JingleConnection { @Override public void onFileTransferAborted() { + JingleConnection.this.sendCancel(); JingleConnection.this.cancel(); } }; @@ -280,16 +281,26 @@ public class JingleConnection { } this.file = this.mXmppConnectionService.getFileBackend().getJingleFile(message,false); if (message.getEncryption() == Message.ENCRYPTION_OTR) { - this.file.setKey(conversation.getSymmetricKey()); + byte[] key = conversation.getSymmetricKey(); + if (key==null) { + this.sendCancel(); + this.cancel(); + return; + } else { + this.file.setKey(conversation.getSymmetricKey()); + } } this.file.setExpectedSize(size); } else { + this.sendCancel(); this.cancel(); } } else { + this.sendCancel(); this.cancel(); } } else { + this.sendCancel(); this.cancel(); } } @@ -410,6 +421,7 @@ public class JingleConnection { connection.setActivated(true); } else { Log.d("xmppService","activated connection not found"); + this.sendCancel(); this.cancel(); } } @@ -603,8 +615,7 @@ public class JingleConnection { this.mJingleConnectionManager.finishConnection(this); } - void cancel() { - this.sendCancel(); + public void cancel() { this.disconnect(); if (this.message!=null) { if (this.responder.equals(account.getFullJid())) { diff --git a/src/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java b/src/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java index 228827ab2..f9de6a6a1 100644 --- a/src/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java +++ b/src/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; +import java.net.SocketTimeoutException; import java.net.UnknownHostException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -137,6 +138,7 @@ public class JingleSocks5Transport extends JingleTransport { MessageDigest digest = MessageDigest.getInstance("SHA-1"); digest.reset(); inputStream.skip(45); + socket.setSoTimeout(30000); file.getParentFile().mkdirs(); file.createNewFile(); OutputStream fileOutputStream = getOutputStream(file); |