Skip to content

Commit 95a2a45

Browse files
authored
fix(AWSLocation): Fixing clock skew retries (#5491)
1 parent e00fa50 commit 95a2a45

File tree

3 files changed

+28
-18
lines changed

3 files changed

+28
-18
lines changed

.github/workflows/integ-test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ jobs:
4747
- AWSKinesisVideoSignaling
4848
- AWSLambda
4949
- AWSLex
50+
- AWSLocation
5051
- AWSPinpoint
5152
- AWSPolly
5253
- AWSRekognition

AWSLocation/AWSLocationService.m

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -62,27 +62,34 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response
6262
data:data
6363
error:error];
6464
if (!*error && [responseObject isKindOfClass:[NSDictionary class]]) {
65-
NSString *errorTypeString = [[response allHeaderFields] objectForKey:@"x-amzn-ErrorType"];
65+
if (!error) {
66+
return responseObject;
67+
}
68+
69+
NSString *errorTypeString = [[response allHeaderFields] objectForKey:@"x-amzn-ErrorType"];
6670
NSString *errorTypeHeader = [[errorTypeString componentsSeparatedByString:@":"] firstObject];
6771

6872
if ([errorTypeString length] > 0 && errorTypeHeader) {
69-
if (errorCodeDictionary[errorTypeHeader]) {
70-
if (error) {
71-
NSDictionary *userInfo = @{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null], NSLocalizedFailureReasonErrorKey: errorTypeString};
72-
*error = [NSError errorWithDomain:AWSLocationErrorDomain
73-
code:[[errorCodeDictionary objectForKey:errorTypeHeader] integerValue]
74-
userInfo:userInfo];
75-
}
76-
return responseObject;
77-
} else if (errorTypeHeader) {
78-
if (error) {
79-
NSDictionary *userInfo = @{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null], NSLocalizedFailureReasonErrorKey: errorTypeString};
80-
*error = [NSError errorWithDomain:AWSLocationErrorDomain
81-
code:AWSLocationErrorUnknown
82-
userInfo:userInfo];
83-
}
84-
return responseObject;
73+
NSString *errorDomain = nil;
74+
NSNumber *errorCode = nil;
75+
76+
if (errorCodeDictionary[errorTypeHeader]) { // First, check if it's a Location error
77+
errorDomain = AWSLocationErrorDomain;
78+
errorCode = errorCodeDictionary[errorTypeHeader];
79+
} else if ([[AWSService errorCodeDictionary] objectForKey:errorTypeHeader]) { // Then, check if it's a Service error
80+
errorDomain = AWSServiceErrorDomain;
81+
errorCode = [[AWSService errorCodeDictionary] objectForKey:errorTypeHeader];
82+
} else { // Finally, fallback to an unknown location error
83+
errorDomain = AWSLocationErrorDomain;
84+
errorCode = [[NSNumber alloc] initWithInt:AWSLocationErrorUnknown];
8585
}
86+
87+
NSDictionary *userInfo = @{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null], NSLocalizedFailureReasonErrorKey: errorTypeString};
88+
*error = [NSError errorWithDomain:errorDomain
89+
code:[errorCode integerValue]
90+
userInfo:userInfo];
91+
92+
return responseObject;
8693
}
8794
}
8895

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
## Unreleased
44

5-
-Features for next release
5+
### Bug Fixes
6+
- **AWSLocation**
7+
- Fixing clock skew retries (#5491)
68

79
## 2.39.0
810

0 commit comments

Comments
 (0)