},
{
"name":"java.lang.Throwable",
- "methods":[{"name":"getMessage","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }]
+ "methods":[{"name":"getMessage","parameterTypes":[] }, {"name":"setStackTrace","parameterTypes":["java.lang.StackTraceElement[]"] }, {"name":"toString","parameterTypes":[] }]
},
{
"name":"java.lang.UnsatisfiedLinkError",
"name":"org.signal.libsignal.net.NetworkException",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
},
+{
+ "name":"org.signal.libsignal.net.RetryLaterException",
+ "methods":[{"name":"<init>","parameterTypes":["long"] }]
+},
{
"name":"org.signal.libsignal.protocol.DuplicateMessageException",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
import org.whispersystems.signalservice.api.push.exceptions.CdsiInvalidArgumentException;
import org.whispersystems.signalservice.api.push.exceptions.CdsiInvalidTokenException;
+import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException;
import java.io.IOException;
import java.util.Collection;
.toSignalServiceAddress();
}
- public Set<RecipientId> resolveRecipients(Collection<RecipientIdentifier.Single> recipients) throws UnregisteredRecipientException {
+ public Set<RecipientId> resolveRecipients(Collection<RecipientIdentifier.Single> recipients) throws UnregisteredRecipientException, IOException {
final var recipientIds = new HashSet<RecipientId>(recipients.size());
for (var number : recipients) {
final var recipientId = resolveRecipient(number);
}
});
} else if (recipient instanceof RecipientIdentifier.Username(String username)) {
- return resolveRecipientByUsernameOrLink(username, false);
+ try {
+ return resolveRecipientByUsernameOrLink(username, false);
+ } catch (Exception e) {
+ return null;
+ }
}
throw new AssertionError("Unexpected RecipientIdentifier: " + recipient);
}
public RecipientId resolveRecipientByUsernameOrLink(
String username,
boolean forceRefresh
- ) throws UnregisteredRecipientException {
+ ) throws UnregisteredRecipientException, IOException {
final Username finalUsername;
try {
finalUsername = getUsernameFromUsernameOrLink(username);
try {
final var aci = handleResponseException(dependencies.getUsernameApi().getAciByUsername(finalUsername));
return account.getRecipientStore().resolveRecipientTrusted(aci, finalUsername.getUsername());
- } catch (IOException e) {
- throw new UnregisteredRecipientException(new org.asamk.signal.manager.api.RecipientAddress(null,
- null,
- null,
- username));
+ } catch (NonSuccessfulResponseCodeException e) {
+ if (e.code == 404) {
+ throw new UnregisteredRecipientException(new org.asamk.signal.manager.api.RecipientAddress(null,
+ null,
+ null,
+ username));
+ }
+ logger.debug("Failed to get uuid for username: {}", username, e);
+ throw e;
}
}
return account.getRecipientStore().resolveRecipientByUsername(finalUsername.getUsername(), () -> {
}
final var usernames = ns.<String>getList("username");
- final var registeredUsernames = usernames == null
- ? Map.<String, UsernameStatus>of()
- : m.getUsernameStatus(new HashSet<>(usernames));
+ final Map<String, UsernameStatus> registeredUsernames;
+ try {
+ registeredUsernames = usernames == null ? Map.of() : m.getUsernameStatus(new HashSet<>(usernames));
+ } catch (IOException e) {
+ throw new IOErrorException("Unable to check if users are registered: "
+ + e.getMessage()
+ + " ("
+ + e.getClass().getSimpleName()
+ + ")", e);
+ }
// Output
switch (outputWriter) {