Merge pull request #935 from OliverLetterer/cfstream-race-condition

Workaround for #907.
This commit is contained in:
Mattt Thompson 2013-05-02 16:17:48 -07:00
commit 8f80919375

View file

@ -1114,8 +1114,21 @@ static const NSUInteger AFMultipartBodyStreamProviderDefaultBufferLength = 4096;
}
- (void)close {
[_outputStream close];
_outputStream.delegate = nil;
NSOutputStream *outputStream = self.outputStream;
[outputStream close];
outputStream.delegate = nil;
/*
Workaround for a race condition in CFStream _CFStreamCopyRunLoopsAndModes. This outputstream needs to be retained just a little longer.
See: https://github.com/AFNetworking/AFNetworking/issues/907
*/
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^{
outputStream.delegate = nil;
});
_self = nil;
}