diff --git a/AFNetworking/AFHTTPRequestOperation.m b/AFNetworking/AFHTTPRequestOperation.m index be49c21..324652b 100644 --- a/AFNetworking/AFHTTPRequestOperation.m +++ b/AFNetworking/AFHTTPRequestOperation.m @@ -108,18 +108,38 @@ static void AFSwizzleClassMethodWithClassAndSelectorUsingBlock(Class klass, SEL #pragma mark - @interface AFHTTPRequestOperation () +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; @property (readwrite, nonatomic, strong) NSURLRequest *request; @property (readwrite, nonatomic, strong) NSHTTPURLResponse *response; -@property (readwrite, nonatomic, strong) NSError *HTTPError; +@property (readwrite, strong) NSError *HTTPError; @end @implementation AFHTTPRequestOperation @synthesize HTTPError = _HTTPError; @synthesize successCallbackQueue = _successCallbackQueue; @synthesize failureCallbackQueue = _failureCallbackQueue; +@dynamic lock; @dynamic request; @dynamic response; +- (NSError *)HTTPError +{ + [self.lock lock]; + NSError *HTTPError = _HTTPError; + [self.lock unlock]; + + return HTTPError; +} + +- (void)setHTTPError:(NSError *)HTTPError +{ + [self.lock lock]; + if (HTTPError != _HTTPError) { + _HTTPError = HTTPError; + } + [self.lock unlock]; +} + - (void)dealloc { if (_successCallbackQueue) { #if !OS_OBJECT_USE_OBJC