mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-21 21:38:02 +01:00
Use UUIDs instead of phone numbers as account identifiers in clustered message cache
This commit is contained in:
@@ -612,6 +612,8 @@ public class AccountController {
|
||||
}
|
||||
|
||||
private Account createAccount(String number, String password, String userAgent, AccountAttributes accountAttributes) {
|
||||
Optional<Account> maybeExistingAccount = accounts.get(number);
|
||||
|
||||
Device device = new Device();
|
||||
device.setId(Device.MASTER_ID);
|
||||
device.setAuthenticationCredentials(new AuthenticationCredentials(password));
|
||||
@@ -643,7 +645,7 @@ public class AccountController {
|
||||
directoryQueue.deleteRegisteredUser(account.getUuid(), number);
|
||||
}
|
||||
|
||||
messagesManager.clear(number);
|
||||
messagesManager.clear(number, maybeExistingAccount.map(Account::getUuid).orElse(null));
|
||||
pendingAccounts.remove(number);
|
||||
|
||||
return account;
|
||||
|
||||
@@ -117,7 +117,7 @@ public class DeviceController {
|
||||
directoryQueue.deleteRegisteredUser(account.getUuid(), account.getNumber());
|
||||
}
|
||||
|
||||
messages.clear(account.getNumber(), deviceId);
|
||||
messages.clear(account.getNumber(), account.getUuid(), deviceId);
|
||||
}
|
||||
|
||||
@Timed
|
||||
@@ -205,7 +205,7 @@ public class DeviceController {
|
||||
device.setCreated(System.currentTimeMillis());
|
||||
|
||||
account.get().addDevice(device);
|
||||
messages.clear(account.get().getNumber(), device.getId());
|
||||
messages.clear(account.get().getNumber(), account.get().getUuid(), device.getId());
|
||||
accounts.update(account.get());
|
||||
|
||||
pendingDevices.remove(number);
|
||||
|
||||
@@ -189,6 +189,7 @@ public class MessageController {
|
||||
}
|
||||
|
||||
return messagesManager.getMessagesForDevice(account.getNumber(),
|
||||
account.getUuid(),
|
||||
account.getAuthenticatedDevice().get().getId());
|
||||
}
|
||||
|
||||
@@ -203,6 +204,7 @@ public class MessageController {
|
||||
WebSocketConnection.messageTime.update(System.currentTimeMillis() - timestamp);
|
||||
|
||||
Optional<OutgoingMessageEntity> message = messagesManager.delete(account.getNumber(),
|
||||
account.getUuid(),
|
||||
account.getAuthenticatedDevice().get().getId(),
|
||||
source, timestamp);
|
||||
|
||||
@@ -222,6 +224,7 @@ public class MessageController {
|
||||
public void removePendingMessage(@Auth Account account, @PathParam("uuid") UUID uuid) {
|
||||
try {
|
||||
Optional<OutgoingMessageEntity> message = messagesManager.delete(account.getNumber(),
|
||||
account.getUuid(),
|
||||
account.getAuthenticatedDevice().get().getId(),
|
||||
uuid);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user