diff --git a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m index 3f6ebdbfe..1358cbaf8 100644 --- a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m +++ b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m @@ -292,6 +292,10 @@ NS_ASSUME_NONNULL_BEGIN request.authUsername = authUsername; request.authPassword = authPassword; + // Don't bother with the default cookie store; + // these cookies are ephemeral. + [request setHTTPShouldHandleCookies:NO]; + return request; } @@ -320,11 +324,11 @@ NS_ASSUME_NONNULL_BEGIN request.authUsername = authUsername; request.authPassword = authPassword; - NSDictionary *cookieHeaders = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; - for (NSString *cookieHeader in cookieHeaders) { - NSString *cookieValue = cookieHeaders[cookieHeader]; - [request setValue:cookieValue forHTTPHeaderField:cookieHeader]; - } + // Don't bother with the default cookie store; + // these cookies are ephemeral. + [request setHTTPShouldHandleCookies:NO]; + // Set the cookie header. + [request setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:cookies]]; return request; } diff --git a/SignalServiceKit/src/Network/API/TSNetworkManager.m b/SignalServiceKit/src/Network/API/TSNetworkManager.m index 71d38ddb8..2c57838fd 100644 --- a/SignalServiceKit/src/Network/API/TSNetworkManager.m +++ b/SignalServiceKit/src/Network/API/TSNetworkManager.m @@ -117,6 +117,17 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error); password:request.authPassword]; } + // Honor the request's preferences about default cookie handling. + // + // Default is YES. + sessionManager.requestSerializer.HTTPShouldHandleCookies = request.HTTPShouldHandleCookies; + + // Honor the request's headers. + for (NSString *headerField in request.allHTTPHeaderFields) { + NSString *headerValue = request.allHTTPHeaderFields[headerField]; + [sessionManager.requestSerializer setValue:headerValue forHTTPHeaderField:headerField]; + } + if ([request.HTTPMethod isEqualToString:@"GET"]) { [sessionManager GET:request.URL.absoluteString parameters:request.parameters @@ -223,7 +234,6 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error); OWSLogError( @"The request contains an invalid parameter : %@, %@", networkError.debugDescription, request); - error.isRetryable = NO; failureBlock(task, error);