From ea156ec3c265bd4f37ec6215b463f4c771406312 Mon Sep 17 00:00:00 2001 From: Adam Ernst Date: Wed, 24 Aug 2011 15:41:32 -0400 Subject: [PATCH] Only check HTTP status code and content type if there isn't already an error passed in to the completion block. Otherwise network errors are overwritten by a faulty error stating the HTTP status code is 0. --- AFNetworking/AFJSONRequestOperation.m | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/AFNetworking/AFJSONRequestOperation.m b/AFNetworking/AFJSONRequestOperation.m index 06dd523..687e599 100644 --- a/AFNetworking/AFJSONRequestOperation.m +++ b/AFNetworking/AFJSONRequestOperation.m @@ -64,14 +64,16 @@ static dispatch_queue_t json_request_operation_processing_queue() { failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure { return [self operationWithRequest:urlRequest completion:^(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error) { - BOOL statusCodeAcceptable = [acceptableStatusCodes containsIndex:[response statusCode]]; - BOOL contentTypeAcceptable = [acceptableContentTypes containsObject:[response MIMEType]]; - if (!statusCodeAcceptable || !contentTypeAcceptable) { - NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [userInfo setValue:[NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]] forKey:NSLocalizedDescriptionKey]; - [userInfo setValue:[request URL] forKey:NSURLErrorFailingURLErrorKey]; - - error = [[[NSError alloc] initWithDomain:NSURLErrorDomain code:[response statusCode] userInfo:userInfo] autorelease]; + if (!error) { + BOOL statusCodeAcceptable = [acceptableStatusCodes containsIndex:[response statusCode]]; + BOOL contentTypeAcceptable = [acceptableContentTypes containsObject:[response MIMEType]]; + if (!statusCodeAcceptable || !contentTypeAcceptable) { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [userInfo setValue:[NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]] forKey:NSLocalizedDescriptionKey]; + [userInfo setValue:[request URL] forKey:NSURLErrorFailingURLErrorKey]; + + error = [[[NSError alloc] initWithDomain:NSURLErrorDomain code:[response statusCode] userInfo:userInfo] autorelease]; + } } if (error) {