diff --git a/StreamingKit.podspec b/StreamingKit.podspec index 78a0f3f..53d6799 100644 --- a/StreamingKit.podspec +++ b/StreamingKit.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "StreamingKit" - s.version = "2.4.24" + s.version = "2.4.25" s.summary = "A fast and extensible audio streamer for iOS and OSX with support for gapless playback and custom (non-HTTP) sources." s.homepage = "https://github.com/tumtumtum/StreamingKit/" s.license = 'MIT' diff --git a/StreamingKit/StreamingKit/STKHTTPDataSource.m b/StreamingKit/StreamingKit/STKHTTPDataSource.m index 67d1bd6..0a57471 100644 --- a/StreamingKit/StreamingKit/STKHTTPDataSource.m +++ b/StreamingKit/StreamingKit/STKHTTPDataSource.m @@ -307,12 +307,13 @@ -(BOOL) parseHttpHeader self->iceHeaderData = nil; } - - if (([httpHeaders objectForKey:@"Accept-Ranges"] ?: [httpHeaders objectForKey:@"accept-ranges"]) != nil) + + NSString* range = ([httpHeaders objectForKey:@"Accept-Ranges"] ?: [httpHeaders objectForKey:@"accept-ranges"]); + if (range != nil && ![[range lowercaseString] isEqualToString: @"none"]) { self->supportsSeek = YES; } - + if (self.httpStatusCode == 200) { if (seekStart == 0) @@ -339,6 +340,8 @@ -(BOOL) parseHttpHeader { fileLength = [[components objectAtIndex:1] integerValue]; } + + self->supportsSeek = YES; } else if (self.httpStatusCode == 416) { @@ -503,7 +506,7 @@ -(void) open -(void) openForSeek:(BOOL)forSeek { - + @synchronized (self) { int localRequestSerialNumber; @@ -529,8 +532,10 @@ -(void) openForSeek:(BOOL)forSeek if (seekStart > 0 && supportsSeek) { CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Range"), (__bridge CFStringRef)[NSString stringWithFormat:@"bytes=%lld-", seekStart]); - + discontinuous = YES; + } else if (seekStart == 0) { + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Range"), (__bridge CFStringRef)[NSString stringWithFormat:@"bytes=0-1"]); } for (NSString* key in self->requestHeaders)