in Source/TNLPseudoURLProtocol.m [453:477]
static NSRange _RangeForRequest(NSURLRequest *request, NSUInteger dataLength, NSString *stringForIfRange)
{
NSString *range = [request.allHTTPHeaderFields tnl_objectForCaseInsensitiveKey:@"Range"];
NSString *ifRange = [request.allHTTPHeaderFields tnl_objectForCaseInsensitiveKey:@"If-Range"];
if ((!ifRange || !stringForIfRange || [ifRange isEqualToString:stringForIfRange]) && [range hasPrefix:@"bytes="]) {
range = [range substringFromIndex:[@"bytes=" length]];
NSArray<NSString *> *ranges = [range componentsSeparatedByString:@","];
if (ranges.count == 1) {
range = ranges.firstObject;
NSArray<NSString *> *indexes = [range componentsSeparatedByString:@"-"];
if (indexes.count == 2) {
const NSInteger startIndex = [indexes[0] integerValue];
NSInteger endIndex = (NSInteger)dataLength - 1;
if ([indexes[1] length] > 0) {
endIndex = [indexes[1] integerValue];
}
if (endIndex >= startIndex) {
return NSMakeRange((NSUInteger)startIndex, (NSUInteger)endIndex - (NSUInteger)startIndex);
}
}
}
}
return NSMakeRange(NSNotFound, 0);
}