From e063f1f21d70b817a7ac91016a8c39424cb80250 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 20 Mar 2011 16:57:47 -0700 Subject: [PATCH] Added socket connect timeout --- .../guacamole/GuacamoleTCPClient.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/GuacamoleTCPClient.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/GuacamoleTCPClient.java index f0c0b23c1..a46c5c2dc 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/GuacamoleTCPClient.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/GuacamoleTCPClient.java @@ -28,10 +28,14 @@ import java.io.InputStreamReader; import java.io.Writer; import java.io.OutputStreamWriter; +import java.net.InetSocketAddress; +import java.net.SocketAddress; public class GuacamoleTCPClient extends GuacamoleClient { + private static final int SOCKET_TIMEOUT = 5000; + private Socket sock; private Reader input; private Writer output; @@ -39,9 +43,21 @@ public class GuacamoleTCPClient extends GuacamoleClient { public GuacamoleTCPClient(String hostname, int port) throws GuacamoleException { try { - sock = new Socket(InetAddress.getByName(hostname), port); + + // Get address + SocketAddress address = new InetSocketAddress( + InetAddress.getByName(hostname), + port + ); + + // Connect with timeout + sock = new Socket(); + sock.connect(address, SOCKET_TIMEOUT); + + // On successful connect, retrieve I/O streams input = new InputStreamReader(sock.getInputStream()); output = new OutputStreamWriter(sock.getOutputStream()); + } catch (IOException e) { throw new GuacamoleException(e);