diff options
author | Loïc Hoguin <[email protected]> | 2019-07-26 14:25:59 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2019-07-26 14:30:38 +0200 |
commit | 56b7fdd6eb15564ad821885937b03516a03dce4b (patch) | |
tree | 9fa4980d1eb59dbd038f1b4fdd1967be4ed420ba /src/gun.erl | |
parent | 00b0b29eacf3eb8a51273dc43064c6367573c4c4 (diff) | |
download | gun-56b7fdd6eb15564ad821885937b03516a03dce4b.tar.gz gun-56b7fdd6eb15564ad821885937b03516a03dce4b.tar.bz2 gun-56b7fdd6eb15564ad821885937b03516a03dce4b.zip |
Add the transport_changed event
Also test protocol_changed over CONNECT.
Diffstat (limited to 'src/gun.erl')
-rw-r--r-- | src/gun.erl | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/gun.erl b/src/gun.erl index ada6272..d158a53 100644 --- a/src/gun.erl +++ b/src/gun.erl @@ -1076,8 +1076,6 @@ commands([Error={error, _}|_], State) -> disconnect(State, Error); commands([{state, ProtoState}|Tail], State) -> commands(Tail, State#state{protocol_state=ProtoState}); -%% @todo The scheme should probably not be ignored. -%% %% Order is important: the origin must be changed before %% the transport and/or protocol in order to keep track %% of the intermediaries properly. @@ -1094,9 +1092,14 @@ commands([{origin, Scheme, Host, Port, Type}|Tail], }, commands(Tail, State#state{origin_scheme=Scheme, origin_host=Host, origin_port=Port, intermediaries=[Info|Intermediaries]}); -commands([{switch_transport, Transport, Socket}|Tail], State) -> +commands([{switch_transport, Transport, Socket}|Tail], State=#state{ + event_handler=EvHandler, event_handler_state=EvHandlerState0}) -> + EvHandlerState = EvHandler:transport_changed(#{ + socket => Socket, + transport => Transport:name() + }, EvHandlerState0), commands(Tail, active(State#state{socket=Socket, transport=Transport, - messages=Transport:messages()})); + messages=Transport:messages(), event_handler_state=EvHandlerState})); %% @todo The two loops should be reunified and this clause generalized. commands([{switch_protocol, Protocol=gun_ws, ProtoState}], State=#state{ event_handler=EvHandler, event_handler_state=EvHandlerState0}) -> |