]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java
Split given/family name in updateContact command
[signal-cli] / src / main / java / org / asamk / signal / jsonrpc / JsonRpcReader.java
index 6e58b23c5f102eee049c98ca02b7cf1f5cca26b4..f3784a2c1d22e92df3e2a12e84dd288305dfa3be 100644 (file)
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ContainerNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.fasterxml.jackson.databind.node.ValueNode;
 
 import org.asamk.signal.util.Util;
@@ -39,7 +40,7 @@ public class JsonRpcReader {
             if (message == null) break;
 
             if (message instanceof final JsonRpcRequest jsonRpcRequest) {
-                logger.debug("Received json rpc request, method: " + jsonRpcRequest.method);
+                logger.debug("Received json rpc request, method: " + jsonRpcRequest.getMethod());
                 final var response = handleRequest(requestHandler, jsonRpcRequest);
                 if (response != null) {
                     jsonRpcSender.sendResponse(response);
@@ -89,10 +90,11 @@ public class JsonRpcReader {
             String input = lineSupplier.get();
 
             if (input == null) {
-                // Reached end of input stream
+                logger.trace("Reached end of JSON-RPC input stream.");
                 break;
             }
 
+            logger.trace("Incoming JSON-RPC message: {}", input);
             JsonRpcMessage message = parseJsonRpcMessage(input);
             if (message == null) continue;
 
@@ -153,6 +155,10 @@ public class JsonRpcReader {
     }
 
     private JsonRpcRequest parseJsonRpcRequest(final JsonNode input) throws JsonRpcException {
+        if (input instanceof ObjectNode i && input.has("params") && input.get("params").isNull()) {
+            // Workaround for clients that send a null params field instead of omitting it
+            i.remove("params");
+        }
         JsonRpcRequest request;
         try {
             request = objectMapper.treeToValue(input, JsonRpcRequest.class);