From: AsamK Date: Sun, 5 Dec 2021 11:00:49 +0000 (+0100) Subject: Improve error message when an account is already in use X-Git-Tag: v0.10.0~27 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/6c1013b02442c9e3d95d471aeaeabeaf62c32269?ds=sidebyside Improve error message when an account is already in use --- diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java index 2e9ae08b..dc23fed9 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java @@ -15,6 +15,7 @@ import org.freedesktop.dbus.DBusPath; import java.io.IOException; import java.net.URI; +import java.nio.channels.OverlappingFileLockException; import java.util.List; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; @@ -60,6 +61,8 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { } catch (CaptchaRequiredException e) { String message = captcha == null ? "Captcha required for verification." : "Invalid captcha given."; throw new SignalControl.Error.RequiresCaptcha(message); + } catch (OverlappingFileLockException e) { + throw new SignalControl.Error.Failure("Account is already in use"); } catch (IOException e) { throw new SignalControl.Error.Failure(e.getClass().getSimpleName() + " " + e.getMessage()); } @@ -76,6 +79,8 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { ) throws Error.Failure, Error.InvalidNumber { try (final RegistrationManager registrationManager = c.getNewRegistrationManager(number)) { registrationManager.verifyAccount(verificationCode, pin); + } catch (OverlappingFileLockException e) { + throw new SignalControl.Error.Failure("Account is already in use"); } catch (IOException | PinLockedException | IncorrectPinException e) { throw new SignalControl.Error.Failure(e.getClass().getSimpleName() + " " + e.getMessage()); } diff --git a/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java b/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java index 23c89f26..8d13ad28 100644 --- a/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java +++ b/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java @@ -27,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.nio.channels.OverlappingFileLockException; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -182,6 +183,9 @@ public class SignalJsonRpcDispatcherHandler { final var registrationManager = c.getNewRegistrationManager(params.get("account").asText()); ((ObjectNode) params).remove("account"); return registrationManager; + } catch (OverlappingFileLockException e) { + logger.warn("Account is already in use"); + return null; } catch (IOException | IllegalStateException e) { logger.warn("Failed to load registration manager", e); return null;