diff options
author | Christian Schneppe <christian.schneppe@pix-art.de> | 2019-10-26 16:50:56 +0200 |
---|---|---|
committer | Christian Schneppe <christian.schneppe@pix-art.de> | 2019-10-26 16:50:56 +0200 |
commit | 25eb08ae486bb7342632478c4f7c818f178cad76 (patch) | |
tree | d6c9973ec026c2fa02867ba7e2a0b97ae80e99a3 /src/main/java/de/pixart/messenger/xmpp/jingle/JingleSocks5Transport.java | |
parent | c488121d3822aa72ec22a070121a04bbcfd0c092 (diff) |
set shorter timeouts when using direct candidates
Diffstat (limited to 'src/main/java/de/pixart/messenger/xmpp/jingle/JingleSocks5Transport.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/xmpp/jingle/JingleSocks5Transport.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleSocks5Transport.java b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleSocks5Transport.java index b3f56bba5..1fc69ec6f 100644 --- a/src/main/java/de/pixart/messenger/xmpp/jingle/JingleSocks5Transport.java +++ b/src/main/java/de/pixart/messenger/xmpp/jingle/JingleSocks5Transport.java @@ -26,7 +26,8 @@ import de.pixart.messenger.utils.WakeLockHelper; import de.pixart.messenger.xmpp.jingle.stanzas.Content; public class JingleSocks5Transport extends JingleTransport { - + private static final int SOCKET_TIMEOUT_DIRECT = 3000; + private static final int SOCKET_TIMEOUT_PROXY = 5000; private final JingleCandidate candidate; private final JingleConnection connection; private final String destination; @@ -93,8 +94,9 @@ public class JingleSocks5Transport extends JingleTransport { } } - private void acceptIncomingSocketConnection(Socket socket) throws IOException { + private void acceptIncomingSocketConnection(final Socket socket) throws IOException { Log.d(Config.LOGTAG, "accepted connection from " + socket.getInetAddress().getHostAddress()); + socket.setSoTimeout(SOCKET_TIMEOUT_DIRECT); final byte[] authBegin = new byte[2]; final InputStream inputStream = socket.getInputStream(); final OutputStream outputStream = socket.getOutputStream(); @@ -137,6 +139,7 @@ public class JingleSocks5Transport extends JingleTransport { outputStream.flush(); if (success) { Log.d(Config.LOGTAG, connection.getAccount().getJid().asBareJid() + ": successfully processed connection to candidate " + candidate.getHost() + ":" + candidate.getPort()); + socket.setSoTimeout(0); this.socket = socket; this.inputStream = inputStream; this.outputStream = outputStream; @@ -152,6 +155,7 @@ public class JingleSocks5Transport extends JingleTransport { public void connect(final OnTransportConnected callback) { new Thread(() -> { + final int timeout = candidate.getType() == JingleCandidate.TYPE_DIRECT ? SOCKET_TIMEOUT_DIRECT : SOCKET_TIMEOUT_PROXY; try { final boolean useTor = connection.getAccount().isOnion() || connection.getConnectionManager().getXmppConnectionService().useTorToConnect(); if (useTor) { @@ -159,11 +163,11 @@ public class JingleSocks5Transport extends JingleTransport { } else { socket = new Socket(); SocketAddress address = new InetSocketAddress(candidate.getHost(), candidate.getPort()); - socket.connect(address, 5000); + socket.connect(address, timeout); } inputStream = socket.getInputStream(); outputStream = socket.getOutputStream(); - socket.setSoTimeout(5000); + socket.setSoTimeout(timeout); SocksSocketFactory.createSocksConnection(socket, destination, 0); socket.setSoTimeout(0); isEstablished = true; |