aboutsummaryrefslogtreecommitdiffstats
path: root/src/gun.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-09-18 13:55:37 +0200
committerLoïc Hoguin <[email protected]>2019-09-22 16:46:35 +0200
commit28b24a32b82c6429462569be14e00bec65a850ee (patch)
treee328b8dc6465e88b61b615f6d3dc9e073556316b /src/gun.erl
parent28c19230eda29c42b376e35046d39acc1365881a (diff)
downloadgun-28b24a32b82c6429462569be14e00bec65a850ee.tar.gz
gun-28b24a32b82c6429462569be14e00bec65a850ee.tar.bz2
gun-28b24a32b82c6429462569be14e00bec65a850ee.zip
Support connecting to HTTPS server via TCP Socks5
Diffstat (limited to 'src/gun.erl')
-rw-r--r--src/gun.erl9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gun.erl b/src/gun.erl
index 85e9405..a6c1edc 100644
--- a/src/gun.erl
+++ b/src/gun.erl
@@ -1306,10 +1306,15 @@ commands([{switch_protocol, Protocol=gun_ws, ProtoState}], State=#state{
{keep_state, keepalive_cancel(State#state{protocol=Protocol, protocol_state=ProtoState,
event_handler_state=EvHandlerState})};
%% @todo And this state should probably not be ignored.
-%% @todo Socks is switching to *http* and we don't seem to support it properly yet.
+%% @todo Socks can be switching to *http* and we don't seem to support it properly yet.
commands([{switch_protocol, Protocol, _ProtoState0}|Tail], State=#state{
- owner=Owner, opts=Opts, socket=Socket, transport=Transport,
+ owner=Owner, opts=Opts, socket=Socket, transport=Transport, protocol=CurrentProtocol,
event_handler=EvHandler, event_handler_state=EvHandlerState0}) ->
+ %% When we switch_protocol from socks we must send a gun_socks_connected message.
+ _ = case CurrentProtocol of
+ gun_socks -> Owner ! {gun_socks_connected, self(), Protocol:name()};
+ _ -> ok
+ end,
ProtoOpts = maps:get(http2_opts, Opts, #{}),
ProtoState = Protocol:init(Owner, Socket, Transport, ProtoOpts),
EvHandlerState = EvHandler:protocol_changed(#{protocol => Protocol:name()}, EvHandlerState0),