<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -392,7 +392,7 @@ static BOOL isiPhoneOS2;
 {
 	[[self cancelledLock] lock];
 
-	if ([self isCancelled]) {
+	if ([self isCancelled] || [self complete]) {
 		[[self cancelledLock] unlock];
 		return;
 	}</diff>
      <filename>Classes/ASIHTTPRequest.m</filename>
    </modified>
    <modified>
      <diff>@@ -621,11 +621,11 @@ IMPORTANT
 // As soon as one request finishes or fails, we'll cancel the others and ensure that no requests are both finished and failed
 - (void)testImmediateCancel
 {
-	[self setFailedRequests:[[[NSMutableArray alloc] init] autorelease]];
-	[self setFinishedRequests:[[[NSMutableArray alloc] init] autorelease]];
+	[self setFailedRequests:[NSMutableArray array]];
+	[self setFinishedRequests:[NSMutableArray array]];
 	[self setImmediateCancelQueue:[[[NSOperationQueue alloc] init] autorelease]];
 	int i;
-	for (i=0; i&lt;25; i++) {
+	for (i=0; i&lt;10; i++) {
 		ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@&quot;http://allseeing-i.com&quot;]];
 		[request setDelegate:self];
 		[request setDidFailSelector:@selector(immediateCancelFail:)];
@@ -637,7 +637,7 @@ IMPORTANT
 
 - (void)immediateCancelFail:(ASIHTTPRequest *)request
 {
-	[[self immediateCancelQueue] cancelAllOperations];
+	NSLog(@&quot;Cancel %@&quot;,request);
 	if ([[self failedRequests] containsObject:request]) {
 		GHFail(@&quot;A request called its fail delegate method twice&quot;);
 	}
@@ -648,11 +648,13 @@ IMPORTANT
 	if ([[self failedRequests] count]+[[self finishedRequests] count] &gt; 25) {
 		GHFail(@&quot;We got more than 25 delegate fail/finish calls - this shouldn't happen!&quot;);
 	}
+	[[self immediateCancelQueue] cancelAllOperations];
+
 }
 
 - (void)immediateCancelFinish:(ASIHTTPRequest *)request
 {
-	[[self immediateCancelQueue] cancelAllOperations];
+	NSLog(@&quot;Finish %@&quot;,request);
 	if ([[self finishedRequests] containsObject:request]) {
 		GHFail(@&quot;A request called its finish delegate method twice&quot;);
 	}
@@ -663,6 +665,7 @@ IMPORTANT
 	if ([[self failedRequests] count]+[[self finishedRequests] count] &gt; 25) {
 		GHFail(@&quot;We got more than 25 delegate fail/finish calls - this shouldn't happen!&quot;);
 	}
+	[[self immediateCancelQueue] cancelAllOperations];
 }
 
 // Ensure class convenience constructor returns an instance of our subclass</diff>
      <filename>Classes/Tests/ASINetworkQueueTests.m</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d00b47cb9788cb52c4106f757e59b93f84cbcc43</id>
    </parent>
  </parents>
  <author>
    <name>Ben Copsey</name>
    <email>ben@allseeing-i.com</email>
  </author>
  <url>http://github.com/pokeb/asi-http-request/commit/35fd545f67e14acb0f12cfb873805f0967693324</url>
  <id>35fd545f67e14acb0f12cfb873805f0967693324</id>
  <committed-date>2009-10-31T04:28:53-07:00</committed-date>
  <authored-date>2009-10-31T04:28:53-07:00</authored-date>
  <message>Don't cancel a request if it has already finished
Closes gh-11</message>
  <tree>f9e01cdb539810f846106281e97631744980cdfc</tree>
  <committer>
    <name>Ben Copsey</name>
    <email>ben@allseeing-i.com</email>
  </committer>
</commit>
