|
|
@ -27,6 +27,7 @@ BOOL IsNSErrorNetworkFailure(NSError *_Nullable error)
|
|
|
|
|
|
|
|
|
|
|
|
// This property should only be accessed on udSerialQueue.
|
|
|
|
// This property should only be accessed on udSerialQueue.
|
|
|
|
@property (atomic, readonly) AFHTTPSessionManager *udSessionManager;
|
|
|
|
@property (atomic, readonly) AFHTTPSessionManager *udSessionManager;
|
|
|
|
|
|
|
|
@property (atomic, readonly) NSDictionary *udSessionManagerDefaultHeaders;
|
|
|
|
|
|
|
|
|
|
|
|
@property (atomic, readonly) dispatch_queue_t udSerialQueue;
|
|
|
|
@property (atomic, readonly) dispatch_queue_t udSerialQueue;
|
|
|
|
|
|
|
|
|
|
|
@ -139,9 +140,12 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error);
|
|
|
|
- (AFHTTPSessionManager *)udSessionManager
|
|
|
|
- (AFHTTPSessionManager *)udSessionManager
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!_udSessionManager) {
|
|
|
|
if (!_udSessionManager) {
|
|
|
|
_udSessionManager = [OWSSignalService sharedInstance].signalServiceSessionManager;
|
|
|
|
AFHTTPSessionManager *udSessionManager = [OWSSignalService sharedInstance].signalServiceSessionManager;
|
|
|
|
_udSessionManager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
|
|
|
|
udSessionManager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
|
|
|
|
// NOTE: We could enable HTTPShouldUsePipelining here.
|
|
|
|
// NOTE: We could enable HTTPShouldUsePipelining here.
|
|
|
|
|
|
|
|
_udSessionManager = udSessionManager;
|
|
|
|
|
|
|
|
// Make a copy of the default headers for this session manager.
|
|
|
|
|
|
|
|
_udSessionManagerDefaultHeaders = [udSessionManager.requestSerializer.HTTPRequestHeaders copy];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return _udSessionManager;
|
|
|
|
return _udSessionManager;
|
|
|
@ -169,10 +173,16 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error);
|
|
|
|
|
|
|
|
|
|
|
|
AFHTTPSessionManager *sessionManager = self.udSessionManager;
|
|
|
|
AFHTTPSessionManager *sessionManager = self.udSessionManager;
|
|
|
|
|
|
|
|
|
|
|
|
// Honor the request's headers.
|
|
|
|
// Clear all headers so that we don't retain headers from previous requests.
|
|
|
|
for (NSString *headerField in sessionManager.requestSerializer.HTTPRequestHeaders.allKeys.copy) {
|
|
|
|
for (NSString *headerField in sessionManager.requestSerializer.HTTPRequestHeaders.allKeys.copy) {
|
|
|
|
[sessionManager.requestSerializer setValue:nil forHTTPHeaderField:headerField];
|
|
|
|
[sessionManager.requestSerializer setValue:nil forHTTPHeaderField:headerField];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Apply the default headers for this session manager.
|
|
|
|
|
|
|
|
for (NSString *headerField in self.udSessionManagerDefaultHeaders) {
|
|
|
|
|
|
|
|
NSString *headerValue = self.udSessionManagerDefaultHeaders[headerField];
|
|
|
|
|
|
|
|
[sessionManager.requestSerializer setValue:headerValue forHTTPHeaderField:headerField];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Honor the request's headers.
|
|
|
|
for (NSString *headerField in request.allHTTPHeaderFields) {
|
|
|
|
for (NSString *headerField in request.allHTTPHeaderFields) {
|
|
|
|
NSString *headerValue = request.allHTTPHeaderFields[headerField];
|
|
|
|
NSString *headerValue = request.allHTTPHeaderFields[headerField];
|
|
|
|
[sessionManager.requestSerializer setValue:headerValue forHTTPHeaderField:headerField];
|
|
|
|
[sessionManager.requestSerializer setValue:headerValue forHTTPHeaderField:headerField];
|
|
|
|