Skip to content

Commit

Permalink
Merge pull request #6389 from vishalduggal/timob-17797-35X
Browse files Browse the repository at this point in the history
[TIMOB-17797](3_5_X)iOS: fixed playing local file in AudioPlayer
  • Loading branch information
vishalduggal committed Nov 24, 2014
2 parents 6eb7a4c + c2f4a97 commit 677b36a
Showing 1 changed file with 59 additions and 53 deletions.
112 changes: 59 additions & 53 deletions iphone/Classes/AudioStreamer/AudioStreamerCUR.m
Original file line number Diff line number Diff line change
Expand Up @@ -495,70 +495,76 @@ - (BOOL)openReadStream
@"File stream download must be started on the internalThread");
NSAssert(stream == nil, @"Download stream already initialized");

//
// Create the HTTP GET request
//
CFHTTPMessageRef message= CFHTTPMessageCreateRequest(NULL, (CFStringRef)@"GET", (CFURLRef)url, kCFHTTPVersion1_1);

//
// If we are creating this request to seek to a location, set the
// requested byte range in the headers.
//
if (fileLength > 0 && seekByteOffset > 0)
{
CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Range"),
(CFStringRef)[NSString stringWithFormat:@"bytes=%ld-%ld", (long)seekByteOffset, (long)fileLength]);
discontinuous = YES;
}

//
// Create the read stream that will receive data from the HTTP request
//
stream = CFReadStreamCreateForHTTPRequest(NULL, message);
CFRelease(message);

//
// Enable stream redirection
//
if (CFReadStreamSetProperty(
stream,
kCFStreamPropertyHTTPShouldAutoredirect,
kCFBooleanTrue) == false)
{
[self presentAlertWithTitle:NSLocalizedStringFromTable(@"File Error", @"Errors", nil)
message:NSLocalizedStringFromTable(@"Unable to configure network read stream.", @"Errors", nil)];
return NO;
}
//check to see if url is local file
if (![url isFileURL]) {
//
// Create the HTTP GET request
//
CFHTTPMessageRef message= CFHTTPMessageCreateRequest(NULL, (CFStringRef)@"GET", (CFURLRef)url, kCFHTTPVersion1_1);

//
// If we are creating this request to seek to a location, set the
// requested byte range in the headers.
//
if (fileLength > 0 && seekByteOffset > 0)
{
CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Range"),
(CFStringRef)[NSString stringWithFormat:@"bytes=%ld-%ld", (long)seekByteOffset, (long)fileLength]);
discontinuous = YES;
}

//
// Create the read stream that will receive data from the HTTP request
//
stream = CFReadStreamCreateForHTTPRequest(NULL, message);
CFRelease(message);

//
// Handle SSL connections
//
if( [[url absoluteString] rangeOfString:@"https"].location != NSNotFound )
{
/*---Titanium Modifications start---*/
/*
* kCFStreamSSLAllowsExpiredCertificates, kCFStreamSSLAllowsExpiredRoots, kCFStreamSSLValidatesCertificateChain
* deprecated in iOS4. Use kCFStreamSSLValidatesCertificateChain to disable certificate chain validation.
NSDictionary *sslSettings =
[NSDictionary dictionaryWithObjectsAndKeys:
//
// Enable stream redirection
//
if (CFReadStreamSetProperty(
stream,
kCFStreamPropertyHTTPShouldAutoredirect,
kCFBooleanTrue) == false)
{
[self presentAlertWithTitle:NSLocalizedStringFromTable(@"File Error", @"Errors", nil)
message:NSLocalizedStringFromTable(@"Unable to configure network read stream.", @"Errors", nil)];
return NO;
}

//
// Handle SSL connections
//
if( [[url absoluteString] rangeOfString:@"https"].location != NSNotFound )
{
/*---Titanium Modifications start---*/
/*
* kCFStreamSSLAllowsExpiredCertificates, kCFStreamSSLAllowsExpiredRoots, kCFStreamSSLValidatesCertificateChain
* deprecated in iOS4. Use kCFStreamSSLValidatesCertificateChain to disable certificate chain validation.
NSDictionary *sslSettings =
[NSDictionary dictionaryWithObjectsAndKeys:
(NSString *)kCFStreamSocketSecurityLevelNegotiatedSSL, kCFStreamSSLLevel,
[NSNumber numberWithBool:YES], kCFStreamSSLAllowsExpiredCertificates,
[NSNumber numberWithBool:YES], kCFStreamSSLAllowsExpiredRoots,
[NSNumber numberWithBool:YES], kCFStreamSSLAllowsAnyRoot,
[NSNumber numberWithBool:NO], kCFStreamSSLValidatesCertificateChain,
[NSNull null], kCFStreamSSLPeerName,
nil];
*/
NSDictionary *sslSettings =
nil];
*/
NSDictionary *sslSettings =
[NSDictionary dictionaryWithObjectsAndKeys:
(NSString *)kCFStreamSocketSecurityLevelNegotiatedSSL, kCFStreamSSLLevel,
[NSNumber numberWithBool:NO], kCFStreamSSLValidatesCertificateChain,
[NSNull null], kCFStreamSSLPeerName,
nil];
/*---Titanium Modifications End---*/
CFReadStreamSetProperty(stream, kCFStreamPropertySSLSettings, sslSettings);
nil];
/*---Titanium Modifications End---*/
CFReadStreamSetProperty(stream, kCFStreamPropertySSLSettings, sslSettings);
}
}
else {
//File is local
stream = CFReadStreamCreateWithFile(NULL, (CFURLRef)url);
}

//
// We're now ready to receive data
//
Expand Down Expand Up @@ -1164,7 +1170,7 @@ - (void)handleReadFromStream:(CFReadStreamRef)aStream
}
else if (eventType == kCFStreamEventHasBytesAvailable)
{
if (!httpHeaders)
if (!httpHeaders && ![url isFileURL])
{
CFTypeRef message =
CFReadStreamCopyProperty(stream, kCFStreamPropertyHTTPResponseHeader);
Expand Down

0 comments on commit 677b36a

Please sign in to comment.