From 2f4094e8019fea94d03d0cf9d118ab57886288e3 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 18 Oct 2018 10:09:53 -0400 Subject: [PATCH] Fix UD auth edge cases. --- SignalMessaging/profiles/ProfileFetcherJob.swift | 3 +++ SignalServiceKit/src/Network/SignalServiceClient.swift | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/SignalMessaging/profiles/ProfileFetcherJob.swift b/SignalMessaging/profiles/ProfileFetcherJob.swift index 1e552cb72..7d92d542b 100644 --- a/SignalMessaging/profiles/ProfileFetcherJob.swift +++ b/SignalMessaging/profiles/ProfileFetcherJob.swift @@ -157,6 +157,9 @@ public class ProfileFetcherJob: NSObject { // If UD auth fails, try again with non-UD auth. if unidentifiedAccess != nil && (statusCode == 401 || statusCode == 403) { Logger.info("Profile request failing over to non-UD auth.") + + self.udManager.setUnidentifiedAccessMode(.disabled, recipientId: recipientId) + let nonUDRequest = OWSRequestFactory.getProfileRequest(recipientId: recipientId, unidentifiedAccess: nil) self.socketManager.make(nonUDRequest, webSocketType: .default, diff --git a/SignalServiceKit/src/Network/SignalServiceClient.swift b/SignalServiceKit/src/Network/SignalServiceClient.swift index e8269385e..878eaa4a8 100644 --- a/SignalServiceKit/src/Network/SignalServiceClient.swift +++ b/SignalServiceKit/src/Network/SignalServiceClient.swift @@ -30,6 +30,10 @@ public class SignalServiceRestClient: NSObject, SignalServiceClient { return TSNetworkManager.shared() } + private var udManager: OWSUDManager { + return SSKEnvironment.shared.udManager + } + func unexpectedServerResponseError() -> Error { return OWSErrorMakeUnableToProcessServerResponseError() } @@ -101,6 +105,9 @@ public class SignalServiceRestClient: NSObject, SignalServiceClient { let statusCode = task.statusCode() if unidentifiedAccess != nil && (statusCode == 401 || statusCode == 403) { Logger.verbose("REST profile request failing over to non-UD auth.") + + self.udManager.setUnidentifiedAccessMode(.disabled, recipientId: recipientId) + let nonUDRequest = OWSRequestFactory.getProfileRequest(recipientId: recipientId, unidentifiedAccess: nil) self.networkManager.makeRequest(nonUDRequest, success: { task, responseObject in