From c36c2504ea42e162ede9adba30945aea4a6694fd Mon Sep 17 00:00:00 2001 From: luvarqpp Date: Wed, 1 Jul 2020 15:39:19 +0200 Subject: [PATCH] Fix exception when receiving POISON_PILL POISON_PILL is causing writing to closed client due to logic in code. --- .../src/main/java/com/baeldung/selector/EchoServer.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java b/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java index 8cf2e941fe..9e9edcd0ba 100644 --- a/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java +++ b/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java @@ -49,11 +49,11 @@ public class EchoServer { if (new String(buffer.array()).trim().equals(POISON_PILL)) { client.close(); System.out.println("Not accepting client messages anymore"); + } else { + buffer.flip(); + client.write(buffer); + buffer.clear(); } - - buffer.flip(); - client.write(buffer); - buffer.clear(); } private static void register(Selector selector, ServerSocketChannel serverSocket) throws IOException {