From b700529c3bdd91de5cd62b6884a59810e1feabce Mon Sep 17 00:00:00 2001 From: jeffrey-signal Date: Wed, 22 Apr 2026 09:19:01 -0400 Subject: [PATCH] Fix stuck outgoing messages when there a no remaining linked devices. --- .../signalservice/api/SignalServiceMessageSender.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java index dc5928a0c8..81a88485fa 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java @@ -2041,6 +2041,11 @@ public class SignalServiceMessageSender { Log.d(TAG, "[sendMessage][" + timestamp + "] Sending a SKDM to " + messages.getDestination() + " for devices: " + messages.getDevices() + (content.getContent().get().dataMessage != null ? " (it's piggy-backing on a DataMessage)" : "")); } + if (messages.getDevices().isEmpty()) { + Log.w(TAG, "[sendMessage][" + timestamp + "] Skipping send - no devices with valid sessions (isMultiDevice=" + aciStore.isMultiDevice() + ")."); + return SendMessageResult.success(recipient, messages.getDevices(), false, false, System.currentTimeMillis() - startTime, content.getContent()); + } + if (cancelationSignal != null && cancelationSignal.isCanceled()) { return SendMessageResult.canceledFailure(recipient); }