From 7b0c3819d074b3e2ae7c5b984bbb6a32fc82ace3 Mon Sep 17 00:00:00 2001 From: Yauheni Khnykin <4347948+Hsilgos@users.noreply.github.com> Date: Fri, 16 Jun 2023 15:22:54 +0200 Subject: [PATCH] Improves support of HTTP proxy on iOS (#1408) Previosuly HTTP didn't work because HTTPS was set up unconditinally and in case when Proxy server didn't have signed certificate any request failed without attempt to send HTTP request. This change separates support of HTTP and HTTPS proxy types. Relates-To: IOTSDK-17819 Signed-off-by: Yauheni Khnykin --- .../src/http/ios/OLPHttpClient.mm | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/olp-cpp-sdk-core/src/http/ios/OLPHttpClient.mm b/olp-cpp-sdk-core/src/http/ios/OLPHttpClient.mm index c521a9332..93fc55921 100644 --- a/olp-cpp-sdk-core/src/http/ios/OLPHttpClient.mm +++ b/olp-cpp-sdk-core/src/http/ios/OLPHttpClient.mm @@ -381,28 +381,25 @@ - (NSURLSession*)urlSessionWithProxy: if (proxyName.length) { proxyDict = [[NSMutableDictionary alloc] init]; NSUInteger port = (NSUInteger)proxySettings.GetPort(); - NSString* proxyType = (__bridge NSString*)kCFProxyTypeHTTPS; - BOOL httpProxy = YES; - if (olp::http::NetworkProxySettings::Type::SOCKS4 == - proxySettings.GetType() || - olp::http::NetworkProxySettings::Type::SOCKS5 == - proxySettings.GetType() || - olp::http::NetworkProxySettings::Type::SOCKS5_HOSTNAME == - proxySettings.GetType()) { - proxyType = (__bridge NSString*)kCFProxyTypeSOCKS; - httpProxy = NO; - } - if (httpProxy) { - proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPEnable] = @(1); - proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPProxy] = proxyName; - proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPPort] = @(port); - - proxyDict[@"HTTPSEnable"] = @(1); - proxyDict[@"HTTPSProxy"] = proxyName; - proxyDict[@"HTTPSPort"] = @(port); - } else { - proxyDict[(__bridge NSString*)kCFProxyTypeKey] = proxyType; + + const auto requestedProxyType = proxySettings.GetType(); + + using ProxyType = olp::http::NetworkProxySettings::Type; + + if (ProxyType::SOCKS4 == requestedProxyType || + ProxyType::SOCKS5 == requestedProxyType || + ProxyType::SOCKS5_HOSTNAME == requestedProxyType) { + proxyDict[(__bridge NSString*)kCFProxyTypeKey] = (__bridge NSString*)kCFProxyTypeSOCKS; + } else if (ProxyType::HTTP == requestedProxyType) { + proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPEnable] = @(1); + proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPProxy] = proxyName; + proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPPort] = @(port); + } else if (ProxyType::HTTPS == requestedProxyType) { + proxyDict[@"HTTPSEnable"] = @(1); + proxyDict[@"HTTPSProxy"] = proxyName; + proxyDict[@"HTTPSPort"] = @(port); } + proxyDict[(__bridge NSString*)kCFProxyHostNameKey] = proxyName; proxyDict[(__bridge NSString*)kCFProxyPortNumberKey] = @(port); NSString* userName =