From 3aca2239f2f80e59ec497cad22ea0f8bc32fbf70 Mon Sep 17 00:00:00 2001 From: mathias Date: Sat, 2 Oct 2021 17:11:28 +0200 Subject: [PATCH] Added the responseSent variable to the HttpResponseController to check if the response has already been sent to prevent errors --- .../http/controller/HttpResponseController.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/de/gnmyt/autoresponder/http/controller/HttpResponseController.java b/src/main/java/de/gnmyt/autoresponder/http/controller/HttpResponseController.java index 223f5c4..d1be6b6 100644 --- a/src/main/java/de/gnmyt/autoresponder/http/controller/HttpResponseController.java +++ b/src/main/java/de/gnmyt/autoresponder/http/controller/HttpResponseController.java @@ -18,6 +18,8 @@ public class HttpResponseController { private final Response response = new Response(); private final HttpExchange exchange; + private boolean responseSent = false; + /** * Constructor of the {@link HttpResponseController} * @@ -64,6 +66,10 @@ public class HttpResponseController { * Sends the response to the AutoResponder */ public void send() { + if (isResponseSent()) { + LOG.warn("Reply already sent, ignoring the message."); + return; + } OutputStream os = exchange.getResponseBody(); response @@ -86,10 +92,19 @@ public class HttpResponseController { exchange.sendResponseHeaders(response.getCode(), bs.length); os.write(bs); } + responseSent = true; os.close(); } catch (IOException e) { LOG.error("Could not process response: " + e.getMessage()); } } + /** + * Checks if the response has already been sent + * + * @return true if the response has already been sent, otherwise false + */ + public boolean isResponseSent() { + return responseSent; + } }