From 0f4fd6109dce0157db74f44068ce35a71af02abc Mon Sep 17 00:00:00 2001 From: Emmanuel Bigeon Date: Mon, 22 Apr 2019 15:29:11 -0400 Subject: [PATCH] Stop console closing on client dirty disconnection Signed-off-by: Emmanuel Bigeon --- .../net/bigeon/gclc/socket/PluggableConsoleInput.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gclc-socket/src/main/java/net/bigeon/gclc/socket/PluggableConsoleInput.java b/gclc-socket/src/main/java/net/bigeon/gclc/socket/PluggableConsoleInput.java index ae0dc04..5f66406 100644 --- a/gclc-socket/src/main/java/net/bigeon/gclc/socket/PluggableConsoleInput.java +++ b/gclc-socket/src/main/java/net/bigeon/gclc/socket/PluggableConsoleInput.java @@ -41,6 +41,7 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.InterruptedIOException; import java.io.PrintStream; import java.nio.charset.StandardCharsets; import java.util.function.Supplier; @@ -119,6 +120,7 @@ public final class PluggableConsoleInput implements ConsoleInput { if (prompting) { // print the hint, to indicate we are waiting for a user input. out.print(hint); + out.println(); out.flush(); } final InputStreamReader streamReader = new InputStreamReader(stream, @@ -279,7 +281,13 @@ public final class PluggableConsoleInput implements ConsoleInput { final long connexionTimeout) throws IOException, InterruptedException { synchronized (connexionLock) { if (connected) { - return connexion.getNextMessage(messageTimeout); + try { + return connexion.getNextMessage(messageTimeout); + } catch (final InterruptedIOException e) { + throw e; + } catch (final IOException e) { + LOGGER.log(Level.INFO, "Communication was abrubptly interrupted", e); + } } connexionLock.wait(connexionTimeout); }