From: AsamK Date: Fri, 28 Oct 2022 16:13:25 +0000 (+0200) Subject: Use complete address instead of only identifier for retry envelope X-Git-Tag: v0.11.5~31 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/0b5a063b6245886276123f2926f3636c432970f9?ds=sidebyside Use complete address instead of only identifier for retry envelope Fixes #1074 --- diff --git a/lib/src/main/java/org/asamk/signal/manager/api/RecipientAddress.java b/lib/src/main/java/org/asamk/signal/manager/api/RecipientAddress.java index f477b9e9..920eafc5 100644 --- a/lib/src/main/java/org/asamk/signal/manager/api/RecipientAddress.java +++ b/lib/src/main/java/org/asamk/signal/manager/api/RecipientAddress.java @@ -64,8 +64,4 @@ public record RecipientAddress(Optional uuid, Optional number) { number.isPresent() && other.number.isPresent() && number.get().equals(other.number.get()) ); } - - public SignalServiceAddress toSignalServiceAddress() { - return new SignalServiceAddress(getServiceId(), number); - } } diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java index 5dca96ea..9fe1bf54 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java @@ -7,6 +7,7 @@ import org.asamk.signal.manager.api.ReceiveConfig; import org.asamk.signal.manager.api.UntrustedIdentityException; import org.asamk.signal.manager.storage.SignalAccount; import org.asamk.signal.manager.storage.messageCache.CachedMessage; +import org.asamk.signal.manager.storage.recipients.RecipientAddress; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.whispersystems.signalservice.api.SignalWebSocket; @@ -261,7 +262,8 @@ public class ReceiveHelper { } if (!envelope.hasSourceUuid()) { final var identifier = ((UntrustedIdentityException) exception).getSender(); - final var recipientId = account.getRecipientResolver().resolveRecipient(identifier.getServiceId()); + final var recipientId = account.getRecipientResolver() + .resolveRecipient(new RecipientAddress(identifier)); try { account.getMessageCache().replaceSender(cachedMessage, recipientId); } catch (IOException ioException) { diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientAddress.java b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientAddress.java index 7dc193a9..6f796b4a 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientAddress.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientAddress.java @@ -53,6 +53,10 @@ public record RecipientAddress(Optional serviceId, Optional pni, this(Optional.of(address.getServiceId()), Optional.empty(), address.getNumber()); } + public RecipientAddress(org.asamk.signal.manager.api.RecipientAddress address) { + this(address.uuid().map(ServiceId::from), Optional.empty(), address.number()); + } + public RecipientAddress(ServiceId serviceId) { this(Optional.of(serviceId), Optional.empty()); }