mirror of
https://github.com/AsamK/signal-cli.git
synced 2026-09-20 06:09:21 +00:00
Updated the JSON-RPC handler on a file lock overlap
This commit is contained in:
parent
9f1ae5f4db
commit
96ec6624c5
@ -129,13 +129,32 @@ public class SignalJsonRpcCommandHandler {
|
|||||||
|
|
||||||
private RegistrationManager getRegistrationManagerFromParams(final ContainerNode<?> params) {
|
private RegistrationManager getRegistrationManagerFromParams(final ContainerNode<?> params) {
|
||||||
if (params != null && params.has("account")) {
|
if (params != null && params.has("account")) {
|
||||||
|
final var number = params.get("account").asText();
|
||||||
try {
|
try {
|
||||||
final var registrationManager = c.getNewRegistrationManager(params.get("account").asText());
|
final var registrationManager = c.getNewRegistrationManager(number);
|
||||||
((ObjectNode) params).remove("account");
|
((ObjectNode) params).remove("account");
|
||||||
return registrationManager;
|
return registrationManager;
|
||||||
} catch (OverlappingFileLockException e) {
|
} catch (OverlappingFileLockException e) {
|
||||||
logger.warn("Account is already in use");
|
logger.warn("Account is already in use, attempting to close existing manager and retry: {}", number);
|
||||||
return null;
|
try {
|
||||||
|
final var existingManager = c.getManager(number);
|
||||||
|
if (existingManager != null) {
|
||||||
|
existingManager.close();
|
||||||
|
}
|
||||||
|
} catch (Throwable closeError) {
|
||||||
|
logger.warn("Failed to close existing manager for {}: {}", number, closeError.getMessage());
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
final var registrationManager = c.getNewRegistrationManager(number);
|
||||||
|
((ObjectNode) params).remove("account");
|
||||||
|
return registrationManager;
|
||||||
|
} catch (OverlappingFileLockException e2) {
|
||||||
|
logger.warn("Account still in use after closing manager: {}", number);
|
||||||
|
return null;
|
||||||
|
} catch (IOException | IllegalStateException e2) {
|
||||||
|
logger.warn("Failed to load registration manager after retry", e2);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
} catch (IOException | IllegalStateException e) {
|
} catch (IOException | IllegalStateException e) {
|
||||||
logger.warn("Failed to load registration manager", e);
|
logger.warn("Failed to load registration manager", e);
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user