HTTP reader: Keep track of task suspend/resume so we don't stall trying to resume an already running stream

CQTexperiment
Christopher Snowhill 2021-12-22 00:14:19 -08:00
parent b2ae62a4db
commit 45ee8b01df
2 changed files with 5 additions and 1 deletions

View File

@ -31,6 +31,7 @@
long _bytesBuffered; long _bytesBuffered;
long _byteCount; long _byteCount;
BOOL taskSuspended;
NSString *_mimeType; NSString *_mimeType;
} }

View File

@ -104,6 +104,7 @@
} }
if (bytesBuffered >= BUFFER_SIZE) { if (bytesBuffered >= BUFFER_SIZE) {
[task suspend]; [task suspend];
taskSuspended = YES;
} }
} }
@ -182,6 +183,7 @@ didCompleteWithError:(NSError *)error{
didReceiveResponse = NO; didReceiveResponse = NO;
didReceiveRandomData = NO; didReceiveRandomData = NO;
redirected = NO; redirected = NO;
taskSuspended = NO;
redirectURLs = [[NSMutableArray alloc] init]; redirectURLs = [[NSMutableArray alloc] init];
bufferedData = [[NSMutableData alloc] init]; bufferedData = [[NSMutableData alloc] init];
@ -262,8 +264,9 @@ didCompleteWithError:(NSError *)error{
bytesBuffered = _bytesBuffered; bytesBuffered = _bytesBuffered;
} }
if (!didComplete && bytesBuffered <= (BUFFER_SIZE * 3 / 4)) { if (!didComplete && taskSuspended && bytesBuffered <= (BUFFER_SIZE * 3 / 4)) {
[task resume]; [task resume];
taskSuspended = NO;
} }
totalRead += amountReceived; totalRead += amountReceived;