aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gun.erl20
-rw-r--r--src/gun_http.erl11
2 files changed, 6 insertions, 25 deletions
diff --git a/src/gun.erl b/src/gun.erl
index ca6c730..93a8d40 100644
--- a/src/gun.erl
+++ b/src/gun.erl
@@ -945,16 +945,11 @@ ensure_alpn(Protocols0, TransOpts) ->
tls_handshake(internal, {tls_handshake, HandshakeEvent, Protocols},
State0=#state{socket=Socket, transport=gun_tcp, protocol=CurrentProtocol}) ->
case normal_tls_handshake(Socket, State0, HandshakeEvent, Protocols) of
- {ok, TLSSocket, CurrentProtocol, State1} ->
- %% We only need to switch the transport when the protocol remains the same.
- %% The transport is given in Proto:init/4 in the other case.
- {keep_state, State} = commands([{switch_transport, gun_tls, TLSSocket}], State1),
- {next_state, connected, State};
- {ok, TLSSocket, NewProtocol, State1} ->
+ {ok, TLSSocket, NewProtocol, State} ->
commands([
{switch_transport, gun_tls, TLSSocket},
{switch_protocol, NewProtocol}
- ], State1);
+ ], State);
{error, Reason, State} ->
commands({error, Reason}, State)
end;
@@ -984,16 +979,7 @@ tls_handshake(info, {gun_tls_proxy, Socket, {ok, Negotiated}, {HandshakeEvent, P
socket => Socket,
protocol => NewProtocol
}, EvHandlerState0),
- State = State0#state{event_handler_state=EvHandlerState},
- case NewProtocol of
- CurrentProtocol ->
- %% We only need to switch the transport when the protocol remains the same.
- %% The transport is given in Proto:init/4 in the other case.
- ProtoState = CurrentProtocol:switch_transport(Transport, Socket, ProtoState0),
- {keep_state, State#state{protocol_state=ProtoState}};
- _ ->
- commands([{switch_protocol, NewProtocol}], State)
- end;
+ commands([{switch_protocol, NewProtocol}], State0#state{event_handler_state=EvHandlerState});
tls_handshake(info, {gun_tls_proxy, Socket, Error = {error, Reason}, {HandshakeEvent, _}},
State=#state{socket=Socket, event_handler=EvHandler, event_handler_state=EvHandlerState0}) ->
EvHandlerState = EvHandler:tls_handshake_end(HandshakeEvent#{
diff --git a/src/gun_http.erl b/src/gun_http.erl
index 85fd2c4..44575bf 100644
--- a/src/gun_http.erl
+++ b/src/gun_http.erl
@@ -313,14 +313,9 @@ handle_head(Data, State=#http_state{version=ClientVersion, content_handlers=Hand
{[{origin, <<"https">>, NewHost, NewPort, connect},
{tls_handshake, HandshakeEvent, Protocols}], EvHandlerState1};
_ ->
- case Protocols of
- [http] ->
- {[{state, State2},
- {origin, <<"http">>, NewHost, NewPort, connect}], EvHandlerState1};
- [http2] ->
- {[{origin, <<"http">>, NewHost, NewPort, connect},
- {switch_protocol, http2}], EvHandlerState1}
- end
+ [Protocol] = Protocols,
+ {[{origin, <<"http">>, NewHost, NewPort, connect},
+ {switch_protocol, Protocol}], EvHandlerState1}
end;
{_, _} when Status >= 100, Status =< 199 ->
ReplyTo ! {gun_inform, self(), stream_ref(StreamRef), Status, Headers},