Skip to content

Commit 7b0c381

Browse files
authored
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 <[email protected]>
1 parent b6a9d77 commit 7b0c381

File tree

1 file changed

+18
-21
lines changed

1 file changed

+18
-21
lines changed

olp-cpp-sdk-core/src/http/ios/OLPHttpClient.mm

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -381,28 +381,25 @@ - (NSURLSession*)urlSessionWithProxy:
381381
if (proxyName.length) {
382382
proxyDict = [[NSMutableDictionary alloc] init];
383383
NSUInteger port = (NSUInteger)proxySettings.GetPort();
384-
NSString* proxyType = (__bridge NSString*)kCFProxyTypeHTTPS;
385-
BOOL httpProxy = YES;
386-
if (olp::http::NetworkProxySettings::Type::SOCKS4 ==
387-
proxySettings.GetType() ||
388-
olp::http::NetworkProxySettings::Type::SOCKS5 ==
389-
proxySettings.GetType() ||
390-
olp::http::NetworkProxySettings::Type::SOCKS5_HOSTNAME ==
391-
proxySettings.GetType()) {
392-
proxyType = (__bridge NSString*)kCFProxyTypeSOCKS;
393-
httpProxy = NO;
394-
}
395-
if (httpProxy) {
396-
proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPEnable] = @(1);
397-
proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPProxy] = proxyName;
398-
proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPPort] = @(port);
399-
400-
proxyDict[@"HTTPSEnable"] = @(1);
401-
proxyDict[@"HTTPSProxy"] = proxyName;
402-
proxyDict[@"HTTPSPort"] = @(port);
403-
} else {
404-
proxyDict[(__bridge NSString*)kCFProxyTypeKey] = proxyType;
384+
385+
const auto requestedProxyType = proxySettings.GetType();
386+
387+
using ProxyType = olp::http::NetworkProxySettings::Type;
388+
389+
if (ProxyType::SOCKS4 == requestedProxyType ||
390+
ProxyType::SOCKS5 == requestedProxyType ||
391+
ProxyType::SOCKS5_HOSTNAME == requestedProxyType) {
392+
proxyDict[(__bridge NSString*)kCFProxyTypeKey] = (__bridge NSString*)kCFProxyTypeSOCKS;
393+
} else if (ProxyType::HTTP == requestedProxyType) {
394+
proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPEnable] = @(1);
395+
proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPProxy] = proxyName;
396+
proxyDict[(__bridge NSString*)kCFNetworkProxiesHTTPPort] = @(port);
397+
} else if (ProxyType::HTTPS == requestedProxyType) {
398+
proxyDict[@"HTTPSEnable"] = @(1);
399+
proxyDict[@"HTTPSProxy"] = proxyName;
400+
proxyDict[@"HTTPSPort"] = @(port);
405401
}
402+
406403
proxyDict[(__bridge NSString*)kCFProxyHostNameKey] = proxyName;
407404
proxyDict[(__bridge NSString*)kCFProxyPortNumberKey] = @(port);
408405
NSString* userName =

0 commit comments

Comments
 (0)