in Source/TNLURLSessionManager.m [1765:1815]
static void _ConfigureSessionConfigurationWithRequestConfiguration(NSURLSessionConfiguration * __nullable sessionConfig,
TNLRequestConfiguration *requestConfig)
{
// Transfer
sessionConfig.allowsCellularAccess = requestConfig.allowsCellularAccess;
sessionConfig.discretionary = requestConfig.isDiscretionary;
sessionConfig.networkServiceType = requestConfig.networkServiceType;
sessionConfig.requestCachePolicy = requestConfig.cachePolicy;
if (tnl_available_ios_11) {
const TNLRequestConnectivityOptions connectivityOptions = requestConfig.connectivityOptions;
if (TNL_BITMASK_INTERSECTS_FLAGS(connectivityOptions, TNLRequestConnectivityOptionWaitForConnectivity)) {
sessionConfig.waitsForConnectivity = YES;
} else if (TNL_BITMASK_INTERSECTS_FLAGS(connectivityOptions, TNLRequestConnectivityOptionWaitForConnectivityWhenRetryPolicyProvided) && requestConfig.retryPolicyProvider != nil) {
sessionConfig.waitsForConnectivity = YES;
} else {
sessionConfig.waitsForConnectivity = NO;
}
if (![NSURLSessionConfiguration tnl_URLSessionCanUseWaitsForConnectivity]) {
if (sessionConfig.waitsForConnectivity) {
TNL_LOG_WAITS_FOR_CONNECTIVITY_WARNING();
sessionConfig.waitsForConnectivity = NO;
}
}
}
#if TARGET_OS_IPHONE // == IOS + WATCH + TV
sessionConfig.sessionSendsLaunchEvents = requestConfig.shouldLaunchAppForBackgroundEvents;
#endif
sessionConfig.HTTPCookieAcceptPolicy = requestConfig.cookieAcceptPolicy;
sessionConfig.HTTPShouldSetCookies = requestConfig.shouldSetCookies;
sessionConfig.sharedContainerIdentifier = requestConfig.sharedContainerIdentifier;
#if TARGET_OS_IOS
if (tnl_available_ios_11) {
sessionConfig.multipathServiceType = requestConfig.multipathServiceType;
}
#endif
sessionConfig.shouldUseExtendedBackgroundIdleMode = requestConfig.shouldUseExtendedBackgroundIdleMode;
// Transfer protocols
NSArray<Class> *additionalClasses = TNLProtocolClassesForProtocolOptions(requestConfig.protocolOptions);
[sessionConfig tnl_insertProtocolClasses:additionalClasses];
// Transfer potentially proxied values
sessionConfig.URLCredentialStorage = TNLUnwrappedURLCredentialStorage(requestConfig.URLCredentialStorage);
sessionConfig.URLCache = TNLUnwrappedURLCache(requestConfig.URLCache);
sessionConfig.HTTPCookieStorage = TNLUnwrappedCookieStorage(requestConfig.cookieStorage);
// Best proxy values
sessionConfig.timeoutIntervalForRequest = (requestConfig.idleTimeout < MIN_TIMER_INTERVAL) ? NSTimeIntervalSince1970 : requestConfig.idleTimeout;
sessionConfig.timeoutIntervalForResource = (requestConfig.attemptTimeout < MIN_TIMER_INTERVAL) ? NSTimeIntervalSince1970 : requestConfig.attemptTimeout;
}