diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java index f04f5cc5e..1c8aafb2c 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java @@ -293,7 +293,18 @@ public class SignalServiceCipher { } else if (e164Address != null && store.containsSession(e164Address)) { return e164Address; } else { - return new SignalProtocolAddress(address.getIdentifier(), sourceDevice); + // TODO [greyson][uuid] We should switch to preferring the UUID once we allow UUID-only recipients + String preferred; + + if (address.getNumber().isPresent()) { + preferred = address.getNumber().get(); + } else if (address.getUuid().isPresent()) { + preferred = address.getUuid().get().toString(); + } else { + throw new AssertionError("Given the constrains of creating a SignalServiceAddress, this should not be possible."); + } + + return new SignalProtocolAddress(preferred, sourceDevice); } } 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 085464d94..823172310 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 @@ -65,7 +65,7 @@ public class SignalServiceAddress { } else if (e164.isPresent()) { return e164.get(); } else { - return null; + throw new AssertionError("Given the checks in the constructor, this should not be possible."); } }