From: AsamK Date: Sun, 22 Aug 2021 16:47:20 +0000 (+0200) Subject: Fix rare null pointer exception when receiving message from untrusted identity X-Git-Tag: v0.9.0~54 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/0a5e836ab69d52c262ea792ed4b84a82dd8a34ca Fix rare null pointer exception when receiving message from untrusted identity --- diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index 60a196dc..cde2714f 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -1843,7 +1843,7 @@ public class Manager implements Closeable { ) throws IOException, InterruptedException { retryFailedReceivedMessages(handler, ignoreAttachments); - Set queuedActions = null; + Set queuedActions = new HashSet<>(); final var signalWebSocket = dependencies.getSignalWebSocket(); signalWebSocket.connect(); @@ -1872,20 +1872,17 @@ public class Manager implements Closeable { // Received indicator that server queue is empty hasCaughtUpWithOldMessages = true; - if (queuedActions != null) { - for (var action : queuedActions) { - try { - action.execute(this); - } catch (Throwable e) { - if (e instanceof AssertionError && e.getCause() instanceof InterruptedException) { - Thread.currentThread().interrupt(); - } - logger.warn("Message action failed.", e); + for (var action : queuedActions) { + try { + action.execute(this); + } catch (Throwable e) { + if (e instanceof AssertionError && e.getCause() instanceof InterruptedException) { + Thread.currentThread().interrupt(); } + logger.warn("Message action failed.", e); } - queuedActions.clear(); - queuedActions = null; } + queuedActions.clear(); // Continue to wait another timeout for new messages continue; @@ -1939,9 +1936,6 @@ public class Manager implements Closeable { } } } else { - if (queuedActions == null) { - queuedActions = new HashSet<>(); - } queuedActions.addAll(actions); } }