From d5d9978e4877f583d05f16f9816a0277d302f4cd Mon Sep 17 00:00:00 2001 From: Chris Eager Date: Thu, 29 Jul 2021 18:39:42 -0500 Subject: [PATCH] Use non-stale account in mutator when adding a new device --- .../controllers/DeviceController.java | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java index 0eeb16851..229bd4550 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2020 Signal Messenger, LLC + * Copyright 2013-2021 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ package org.whispersystems.textsecuregcm.controllers; @@ -7,30 +7,11 @@ package org.whispersystems.textsecuregcm.controllers; import com.codahale.metrics.annotation.Timed; import com.google.common.annotations.VisibleForTesting; import io.dropwizard.auth.Auth; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.whispersystems.textsecuregcm.auth.AuthenticationCredentials; -import org.whispersystems.textsecuregcm.auth.AuthorizationHeader; -import org.whispersystems.textsecuregcm.auth.InvalidAuthorizationHeaderException; -import org.whispersystems.textsecuregcm.auth.StoredVerificationCode; -import org.whispersystems.textsecuregcm.entities.AccountAttributes; -import org.whispersystems.textsecuregcm.entities.DeviceInfo; -import org.whispersystems.textsecuregcm.entities.DeviceInfoList; -import org.whispersystems.textsecuregcm.entities.DeviceResponse; -import org.whispersystems.textsecuregcm.limits.RateLimiters; -import org.whispersystems.textsecuregcm.sqs.DirectoryQueue; -import org.whispersystems.textsecuregcm.storage.Account; -import org.whispersystems.textsecuregcm.storage.AccountsManager; -import org.whispersystems.textsecuregcm.storage.Device; -import org.whispersystems.textsecuregcm.storage.Device.DeviceCapabilities; -import org.whispersystems.textsecuregcm.storage.KeysDynamoDb; -import org.whispersystems.textsecuregcm.storage.MessagesManager; -import org.whispersystems.textsecuregcm.storage.StoredVerificationCodeManager; -import org.whispersystems.textsecuregcm.util.Util; -import org.whispersystems.textsecuregcm.util.VerificationCode; -import org.whispersystems.textsecuregcm.util.ua.UnrecognizedUserAgentException; -import org.whispersystems.textsecuregcm.util.ua.UserAgentUtil; - +import java.security.SecureRandom; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Optional; import javax.validation.Valid; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -43,11 +24,28 @@ import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import java.security.SecureRandom; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.whispersystems.textsecuregcm.auth.AuthenticationCredentials; +import org.whispersystems.textsecuregcm.auth.AuthorizationHeader; +import org.whispersystems.textsecuregcm.auth.InvalidAuthorizationHeaderException; +import org.whispersystems.textsecuregcm.auth.StoredVerificationCode; +import org.whispersystems.textsecuregcm.entities.AccountAttributes; +import org.whispersystems.textsecuregcm.entities.DeviceInfo; +import org.whispersystems.textsecuregcm.entities.DeviceInfoList; +import org.whispersystems.textsecuregcm.entities.DeviceResponse; +import org.whispersystems.textsecuregcm.limits.RateLimiters; +import org.whispersystems.textsecuregcm.storage.Account; +import org.whispersystems.textsecuregcm.storage.AccountsManager; +import org.whispersystems.textsecuregcm.storage.Device; +import org.whispersystems.textsecuregcm.storage.Device.DeviceCapabilities; +import org.whispersystems.textsecuregcm.storage.KeysDynamoDb; +import org.whispersystems.textsecuregcm.storage.MessagesManager; +import org.whispersystems.textsecuregcm.storage.StoredVerificationCodeManager; +import org.whispersystems.textsecuregcm.util.Util; +import org.whispersystems.textsecuregcm.util.VerificationCode; +import org.whispersystems.textsecuregcm.util.ua.UnrecognizedUserAgentException; +import org.whispersystems.textsecuregcm.util.ua.UserAgentUtil; @Path("/v1/devices") public class DeviceController { @@ -198,10 +196,10 @@ public class DeviceController { device.setCapabilities(accountAttributes.getCapabilities()); accounts.update(account.get(), a -> { - device.setId(account.get().getNextDeviceId()); - messages.clear(account.get().getUuid(), device.getId()); + device.setId(a.getNextDeviceId()); + messages.clear(a.getUuid(), device.getId()); a.addDevice(device); - });; + }); pendingDevices.remove(number);