Toggle navigation
Toggle navigation
This project
Loading...
Sign in
iOS
/
asi-http-request
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Ben Copsey
2009-10-31 11:28:53 +0000
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
35fd545f67e14acb0f12cfb873805f0967693324
35fd545f
1 parent
d00b47cb
Don't cancel a request if it has already finished
Closes gh-11
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
9 additions
and
6 deletions
Classes/ASIHTTPRequest.m
Classes/Tests/ASINetworkQueueTests.m
Classes/ASIHTTPRequest.m
View file @
35fd545
...
...
@@ -392,7 +392,7 @@ static BOOL isiPhoneOS2;
{
[[
self
cancelledLock
]
lock
];
if
([
self
isCancelled
])
{
if
([
self
isCancelled
]
||
[
self
complete
]
)
{
[[
self
cancelledLock
]
unlock
];
return
;
}
...
...
Classes/Tests/ASINetworkQueueTests.m
View file @
35fd545
...
...
@@ -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
<
25
;
i
++
)
{
for
(
i
=
0
;
i
<
10
;
i
++
)
{
ASIHTTPRequest
*
request
=
[
ASIHTTPRequest
requestWithURL
:[
NSURL
URLWithString
:
@"http://allseeing-i.com"
]];
[
request
setDelegate
:
self
];
[
request
setDidFailSelector
:
@selector
(
immediateCancelFail
:)];
...
...
@@ -637,7 +637,7 @@ IMPORTANT
-
(
void
)
immediateCancelFail
:
(
ASIHTTPRequest
*
)
request
{
[[
self
immediateCancelQueue
]
cancelAllOperations
]
;
NSLog
(
@"Cancel %@"
,
request
)
;
if
([[
self
failedRequests
]
containsObject
:
request
])
{
GHFail
(
@"A request called its fail delegate method twice"
);
}
...
...
@@ -648,11 +648,13 @@ IMPORTANT
if
([[
self
failedRequests
]
count
]
+
[[
self
finishedRequests
]
count
]
>
25
)
{
GHFail
(
@"We got more than 25 delegate fail/finish calls - this shouldn't happen!"
);
}
[[
self
immediateCancelQueue
]
cancelAllOperations
];
}
-
(
void
)
immediateCancelFinish
:
(
ASIHTTPRequest
*
)
request
{
[[
self
immediateCancelQueue
]
cancelAllOperations
]
;
NSLog
(
@"Finish %@"
,
request
)
;
if
([[
self
finishedRequests
]
containsObject
:
request
])
{
GHFail
(
@"A request called its finish delegate method twice"
);
}
...
...
@@ -663,6 +665,7 @@ IMPORTANT
if
([[
self
failedRequests
]
count
]
+
[[
self
finishedRequests
]
count
]
>
25
)
{
GHFail
(
@"We got more than 25 delegate fail/finish calls - this shouldn't happen!"
);
}
[[
self
immediateCancelQueue
]
cancelAllOperations
];
}
// Ensure class convenience constructor returns an instance of our subclass
...
...
Please
register
or
login
to post a comment