Skip to content

Commit

Permalink
Improves support of HTTP proxy on iOS (#1408)
Browse files Browse the repository at this point in the history
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 <yauheni.khnykin@here.com>
  • Loading branch information
Hsilgos committed Jun 16, 2023
1 parent b6a9d77 commit 7b0c381
Showing 1 changed file with 18 additions and 21 deletions.
39 changes: 18 additions & 21 deletions olp-cpp-sdk-core/src/http/ios/OLPHttpClient.mm
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand Down

0 comments on commit 7b0c381

Please sign in to comment.