Stop console closing on client dirty disconnection

Signed-off-by: Emmanuel Bigeon <emmanuel@bigeon.fr>
This commit is contained in:
Emmanuel Bigeon 2019-04-22 15:29:11 -04:00
parent 69a8fd2533
commit 0f4fd6109d

View File

@ -41,6 +41,7 @@ import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.InterruptedIOException;
import java.io.PrintStream; import java.io.PrintStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.function.Supplier; import java.util.function.Supplier;
@ -119,6 +120,7 @@ public final class PluggableConsoleInput implements ConsoleInput {
if (prompting) { if (prompting) {
// print the hint, to indicate we are waiting for a user input. // print the hint, to indicate we are waiting for a user input.
out.print(hint); out.print(hint);
out.println();
out.flush(); out.flush();
} }
final InputStreamReader streamReader = new InputStreamReader(stream, final InputStreamReader streamReader = new InputStreamReader(stream,
@ -279,7 +281,13 @@ public final class PluggableConsoleInput implements ConsoleInput {
final long connexionTimeout) throws IOException, InterruptedException { final long connexionTimeout) throws IOException, InterruptedException {
synchronized (connexionLock) { synchronized (connexionLock) {
if (connected) { if (connected) {
try {
return connexion.getNextMessage(messageTimeout); 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); connexionLock.wait(connexionTimeout);
} }