From e0831197d3944ccfd91249660d9373ea0d8f8993 Mon Sep 17 00:00:00 2001 From: Mattt Thompson Date: Fri, 24 Feb 2012 09:01:00 -0800 Subject: [PATCH] Minor formatting changes Adding line comment about why cancelConnection is being called as it is Minor edit to comment about manually sending delegate message on cancel --- AFNetworking/AFURLConnectionOperation.m | 35 ++++++++++++++----------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/AFNetworking/AFURLConnectionOperation.m b/AFNetworking/AFURLConnectionOperation.m index b39e574..00b898b 100644 --- a/AFNetworking/AFURLConnectionOperation.m +++ b/AFNetworking/AFURLConnectionOperation.m @@ -334,29 +334,32 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat self.state = AFHTTPOperationFinishedState; } --(void)cancelConnection { - [self willChangeValueForKey:@"isCancelled"]; - _cancelled = YES; - - if (self.connection) { - [self.connection cancel]; - //We must send this delegate protcol message ourselves since the above [self.connection cancel] causes the connection to never send another message to its delegate. - NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; - [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]]; - } - - [self didChangeValueForKey:@"isCancelled"]; -} - - (void)cancel { [self.lock lock]; if (![self isFinished] && ![self isCancelled]) { - [super cancel]; - [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + [super cancel]; + + // Cancel the connection on the thread it runs on to prevent race conditions + [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; } + [self.lock unlock]; } +- (void)cancelConnection { + [self willChangeValueForKey:@"isCancelled"]; + _cancelled = YES; + + if (self.connection) { + [self.connection cancel]; + + // Manually send this delegate message since `[self.connection cancel]` causes the connection to never send another message to its delegate + NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; + [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]]; + } + [self didChangeValueForKey:@"isCancelled"]; +} + #pragma mark - NSURLConnectionDelegate - (BOOL)connection:(NSURLConnection *)connection