diff --git a/SignalServiceKit/src/Contacts/ContactDiscoveryService.h b/SignalServiceKit/src/Contacts/ContactDiscoveryService.h index 58952bb27..645b33691 100644 --- a/SignalServiceKit/src/Contacts/ContactDiscoveryService.h +++ b/SignalServiceKit/src/Contacts/ContactDiscoveryService.h @@ -4,6 +4,11 @@ NS_ASSUME_NONNULL_BEGIN +extern NSErrorDomain const ContactDiscoveryServiceErrorDomain; +typedef NS_ERROR_ENUM(ContactDiscoveryServiceErrorDomain, ContactDiscoveryServiceError){ + ContactDiscoveryServiceErrorAttestationFailed = 100, +}; + @class ECKeyPair; @class OWSAES256Key; diff --git a/SignalServiceKit/src/Contacts/ContactDiscoveryService.m b/SignalServiceKit/src/Contacts/ContactDiscoveryService.m index 8f6fee440..935c87164 100644 --- a/SignalServiceKit/src/Contacts/ContactDiscoveryService.m +++ b/SignalServiceKit/src/Contacts/ContactDiscoveryService.m @@ -8,6 +8,7 @@ #import "Cryptography.h" #import "NSData+OWS.h" #import "NSDate+OWS.h" +#import "NSError+MessageSending.h" #import "OWSError.h" #import "OWSRequestFactory.h" #import "TSNetworkManager.h" @@ -16,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN +NSErrorDomain const ContactDiscoveryServiceErrorDomain = @"SignalServiceKit.ContactDiscoveryService"; + @interface RemoteAttestationAuth () @property (nonatomic) NSString *username; @@ -357,7 +360,10 @@ NS_ASSUME_NONNULL_BEGIN auth:auth]; if (!attestation) { - NSError *error = OWSErrorMakeUnableToProcessServerResponseError(); + NSError *error = [NSError errorWithDomain:ContactDiscoveryServiceErrorDomain + code:ContactDiscoveryServiceErrorAttestationFailed + userInfo:nil]; + error.isRetryable = NO; failureHandler(error); return; } @@ -366,8 +372,6 @@ NS_ASSUME_NONNULL_BEGIN }); } failure:^(NSURLSessionDataTask *task, NSError *error) { - NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response; - OWSLogVerbose(@"remote attestation failure: %lu", (unsigned long)response.statusCode); failureHandler(error); }]; } diff --git a/SignalServiceKit/src/Contacts/OWSContactDiscoveryOperation.swift b/SignalServiceKit/src/Contacts/OWSContactDiscoveryOperation.swift index c60900788..b55b7eaab 100644 --- a/SignalServiceKit/src/Contacts/OWSContactDiscoveryOperation.swift +++ b/SignalServiceKit/src/Contacts/OWSContactDiscoveryOperation.swift @@ -139,7 +139,6 @@ class LegacyContactDiscoveryBatchOperation: OWSOperation { enum ContactDiscoveryError: Error { case parseError(description: String) case assertionError(description: String) - case attestationError(underlyingError: Error) case clientError(underlyingError: Error) case serverError(underlyingError: Error) } @@ -234,13 +233,7 @@ class CDSBatchOperation: OWSOperation { contactDiscoveryService.performRemoteAttestation(success: { (remoteAttestation: RemoteAttestation) in self.makeContactDiscoveryRequest(remoteAttestation: remoteAttestation) }, - failure: self.attestationFailure) - } - - private func attestationFailure(error: Error) { - let attestationError: NSError = ContactDiscoveryError.attestationError(underlyingError: error) as NSError - attestationError.isRetryable = false - self.reportError(attestationError) + failure: self.reportError) } private func makeContactDiscoveryRequest(remoteAttestation: RemoteAttestation) { @@ -462,7 +455,7 @@ class CDSFeedbackOperation: OWSOperation { case ContactDiscoveryError.serverError, ContactDiscoveryError.clientError: // Server already has this information, no need submit feedback self.reportSuccess() - case ContactDiscoveryError.attestationError: + case ContactDiscoveryServiceError.attestationFailed: self.makeRequest(result: .attestationError) default: self.makeRequest(result: .unexpectedError)