X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/8d55dfb66bc0dfbd2b601a27075f2876cde918e3..7c7fc76a649678e9f77f1fcaeaaf4efdf9cc3cd9:/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java diff --git a/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java b/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java index f9ef71a1..327342a2 100644 --- a/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java +++ b/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java @@ -23,7 +23,7 @@ import java.util.stream.StreamSupport; public class JsonRpcReader { - private final static Logger logger = LoggerFactory.getLogger(JsonRpcReader.class); + private static final Logger logger = LoggerFactory.getLogger(JsonRpcReader.class); private final JsonRpcSender jsonRpcSender; private final ObjectMapper objectMapper; @@ -55,8 +55,7 @@ public class JsonRpcReader { return; } - final var executor = Executors.newFixedThreadPool(10); - try { + try (final var executor = Executors.newCachedThreadPool()) { while (!Thread.interrupted()) { final var input = lineSupplier.get(); if (input == null) { @@ -72,8 +71,6 @@ public class JsonRpcReader { executor.submit(() -> handleMessage(message, requestHandler, responseHandler)); } - } finally { - Util.closeExecutorService(executor); } } @@ -94,8 +91,7 @@ public class JsonRpcReader { case JsonRpcBatchMessage jsonRpcBatchMessage -> { final var messages = jsonRpcBatchMessage.getMessages(); final var responseList = new ArrayList(messages.size()); - final var executor = Executors.newFixedThreadPool(10); - try { + try (final var executor = Executors.newCachedThreadPool()) { final var lock = new ReentrantLock(); messages.forEach(jsonNode -> { final JsonRpcRequest request; @@ -124,8 +120,6 @@ public class JsonRpcReader { } }); }); - } finally { - Util.closeExecutorService(executor); } if (!responseList.isEmpty()) { @@ -157,6 +151,13 @@ public class JsonRpcReader { } private JsonRpcMessage parseJsonRpcMessage(final String input) { + if (input.trim().isEmpty()) { + jsonRpcSender.sendResponse(JsonRpcResponse.forError(new JsonRpcResponse.Error(JsonRpcResponse.Error.PARSE_ERROR, + "Empty input line", + null), null)); + return null; + } + final JsonNode jsonNode; try { jsonNode = objectMapper.readTree(input);