diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java index c8968c7164..2534729b86 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java @@ -1157,6 +1157,9 @@ public class SignalServiceMessageSender { if (recipient.isPresent()) { sentMessage.setDestinationUuid(recipient.get().getServiceId().toString()); + if (recipient.get().getNumber().isPresent()) { + sentMessage.setDestinationE164(recipient.get().getNumber().get()); + } } if (dataMessage != null) { diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceContent.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceContent.java index b8d506720c..13de8ab5a9 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceContent.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceContent.java @@ -674,7 +674,7 @@ public final class SignalServiceContent { Optional dataMessage = sentContent.hasMessage() ? Optional.of(createSignalServiceMessage(metadata, sentContent.getMessage())) : Optional.empty(); Optional storyMessage = sentContent.hasStoryMessage() ? Optional.of(createStoryMessage(sentContent.getStoryMessage())) : Optional.empty(); Optional address = SignalServiceAddress.isValidAddress(sentContent.getDestinationUuid()) - ? Optional.of(new SignalServiceAddress(ServiceId.parseOrThrow(sentContent.getDestinationUuid()))) + ? Optional.of(new SignalServiceAddress(ServiceId.parseOrThrow(sentContent.getDestinationUuid()), sentContent.getDestinationE164())) : Optional.empty(); Set recipientManifest = sentContent.getStoryMessageRecipientsList() .stream() diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/push/SignalServiceAddress.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/push/SignalServiceAddress.java index 8a47de9a1b..62756fbfca 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/push/SignalServiceAddress.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/push/SignalServiceAddress.java @@ -34,7 +34,8 @@ public class SignalServiceAddress { this.e164 = e164; } - @SuppressWarnings("NewApi") public SignalServiceAddress(ServiceId serviceId) { + @SuppressWarnings("NewApi") + public SignalServiceAddress(ServiceId serviceId) { this.serviceId = Preconditions.checkNotNull(serviceId); this.e164 = Optional.empty(); } diff --git a/libsignal/service/src/main/proto/SignalService.proto b/libsignal/service/src/main/proto/SignalService.proto index 88efdca531..058d74f457 100644 --- a/libsignal/service/src/main/proto/SignalService.proto +++ b/libsignal/service/src/main/proto/SignalService.proto @@ -433,7 +433,7 @@ message SyncMessage { optional bool isAllowedToReply = 3; } - reserved /*destinationE164*/ 1; + optional string destinationE164 = 1; optional string destinationUuid = 7; optional uint64 timestamp = 2; optional DataMessage message = 3;