| Index: src/common/mac/HTTPMultipartUpload.m
|
| diff --git a/src/common/mac/HTTPMultipartUpload.m b/src/common/mac/HTTPMultipartUpload.m
|
| index eb44d4e632f8a6e40cd168db40891201501ff86b..9ac886d53ea2b20254f04513ec7576a013c9f21e 100644
|
| --- a/src/common/mac/HTTPMultipartUpload.m
|
| +++ b/src/common/mac/HTTPMultipartUpload.m
|
| @@ -47,6 +47,48 @@ static NSString *PercentEncodeNSString(NSString *key) {
|
| #endif
|
| }
|
|
|
| +// As -[NSURLConnection sendSynchronousRequest:returningResponse:error:] has
|
| +// been deprecated with iOS 9.0 / OS X 10.11 SDKs, this function re-implements
|
| +// it using -[NSURLSession dataTaskWithRequest:completionHandler:] when using
|
| +// those SDKs.
|
| +static NSData *SendSynchronousNSURLRequest(NSURLRequest *req,
|
| + NSURLResponse **out_response,
|
| + NSError **out_error) {
|
| +#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_9_0) && \
|
| + __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0) || \
|
| + (defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \
|
| + defined(MAC_OS_X_VERSION_10_11) && \
|
| + MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11)
|
| + __block NSData* result = nil;
|
| + __block NSError* error = nil;
|
| + __block NSURLResponse* response = nil;
|
| + dispatch_semaphore_t wait_semaphone = dispatch_semaphore_create(0);
|
| + [[[NSURLSession sharedSession]
|
| + dataTaskWithRequest:req
|
| + completionHandler:^(NSData *data,
|
| + NSURLResponse *resp,
|
| + NSError *err) {
|
| + if (out_error)
|
| + error = [err retain];
|
| + if (out_response)
|
| + response = [resp retain];
|
| + if (err == nil)
|
| + result = [data retain];
|
| + dispatch_semaphore_signal(wait_semaphone);
|
| + }] resume];
|
| + dispatch_semaphore_wait(wait_semaphone, DISPATCH_TIME_FOREVER);
|
| + dispatch_release(wait_semaphone);
|
| + if (out_error)
|
| + *out_error = [error autorelease];
|
| + if (out_response)
|
| + *out_response = [response autorelease];
|
| + return [result autorelease];
|
| +#else
|
| + return [NSURLConnection sendSynchronousRequest:req
|
| + returningResponse:out_response
|
| + error:out_error];
|
| +#endif
|
| +}
|
| @interface HTTPMultipartUpload(PrivateMethods)
|
| - (NSString *)multipartBoundary;
|
| // Each of the following methods will append the starting multipart boundary,
|
| @@ -211,9 +253,7 @@ static NSString *PercentEncodeNSString(NSString *key) {
|
| [[req HTTPBody] writeToURL:[req URL] options:0 error:error];
|
| } else {
|
| NSURLResponse *response = nil;
|
| - data = [NSURLConnection sendSynchronousRequest:req
|
| - returningResponse:&response
|
| - error:error];
|
| + data = SendSynchronousNSURLRequest(req, &response, error);
|
| response_ = (NSHTTPURLResponse *)[response retain];
|
| }
|
| [req release];
|
|
|