From 03dbfa088ea68244879df486e9afba8643a621d7 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sat, 22 Mar 2014 15:27:54 -0700 Subject: [PATCH] GUAC-561: Throw timeout exception when socket times out. --- .../org/glyptodon/guacamole/io/ReaderGuacamoleReader.java | 5 +++++ .../org/glyptodon/guacamole/net/InetGuacamoleSocket.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/guacamole-common/src/main/java/org/glyptodon/guacamole/io/ReaderGuacamoleReader.java b/guacamole-common/src/main/java/org/glyptodon/guacamole/io/ReaderGuacamoleReader.java index 5e8b4e2ab..9cfc3d265 100644 --- a/guacamole-common/src/main/java/org/glyptodon/guacamole/io/ReaderGuacamoleReader.java +++ b/guacamole-common/src/main/java/org/glyptodon/guacamole/io/ReaderGuacamoleReader.java @@ -25,10 +25,12 @@ package org.glyptodon.guacamole.io; import java.io.IOException; import java.io.Reader; +import java.net.SocketTimeoutException; import java.util.Deque; import java.util.LinkedList; import org.glyptodon.guacamole.GuacamoleException; import org.glyptodon.guacamole.GuacamoleServerException; +import org.glyptodon.guacamole.GuacamoleUpstreamTimeoutException; import org.glyptodon.guacamole.protocol.GuacamoleInstruction; /** @@ -177,6 +179,9 @@ public class ReaderGuacamoleReader implements GuacamoleReader { } // End read loop } + catch (SocketTimeoutException e) { + throw new GuacamoleUpstreamTimeoutException("Connection to guacd timed out.", e); + } catch (IOException e) { throw new GuacamoleServerException(e); } diff --git a/guacamole-common/src/main/java/org/glyptodon/guacamole/net/InetGuacamoleSocket.java b/guacamole-common/src/main/java/org/glyptodon/guacamole/net/InetGuacamoleSocket.java index 0e3d74758..c4cb6583e 100644 --- a/guacamole-common/src/main/java/org/glyptodon/guacamole/net/InetGuacamoleSocket.java +++ b/guacamole-common/src/main/java/org/glyptodon/guacamole/net/InetGuacamoleSocket.java @@ -36,8 +36,10 @@ import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.net.SocketTimeoutException; import org.glyptodon.guacamole.GuacamoleException; import org.glyptodon.guacamole.GuacamoleServerException; +import org.glyptodon.guacamole.GuacamoleUpstreamTimeoutException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -110,6 +112,9 @@ public class InetGuacamoleSocket implements GuacamoleSocket { writer = new WriterGuacamoleWriter(new OutputStreamWriter(sock.getOutputStream(), "UTF-8")); } + catch (SocketTimeoutException e) { + throw new GuacamoleUpstreamTimeoutException("Connection timed out.", e); + } catch (IOException e) { throw new GuacamoleServerException(e); }