From b9e6c69adb23187607fb7998ea0cd69e78313f81 Mon Sep 17 00:00:00 2001 From: Fedor Shashin Date: Sat, 8 Oct 2016 15:02:10 +0300 Subject: [PATCH] socks5 + ssl Upgrading socks5 proxy connection to SSL connection --- src/ibrowse_http_client.erl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ibrowse_http_client.erl b/src/ibrowse_http_client.erl index b43b541..27fe1ad 100644 --- a/src/ibrowse_http_client.erl +++ b/src/ibrowse_http_client.erl @@ -570,7 +570,19 @@ do_connect(Host, Port, Options, #state{is_ssl = true, use_proxy = false, ssl_options = SSLOptions}, Timeout) -> - ssl:connect(Host, Port, get_sock_options(Host, Options, SSLOptions), Timeout); + Socks5Host = get_value(socks5_host, Options, undefined), + Sock_options = get_sock_options(Host, Options, []), + catch case Socks5Host of + undefined -> + ssl:connect(Host, Port, get_sock_options(Host, Options, SSLOptions), Timeout); + _ -> + case ibrowse_socks5:connect(Host, Port, Options, Sock_options, Timeout) of + {ok, Socket} -> + ssl:connect(Socket, get_sock_options(Host, Options, SSLOptions), Timeout); + Else -> + Else + end + end; do_connect(Host, Port, Options, _State, Timeout) -> Socks5Host = get_value(socks5_host, Options, undefined), Sock_options = get_sock_options(Host, Options, []),