diff options
author | Ingela Anderton Andin <[email protected]> | 2017-02-03 10:09:02 +0100 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2017-03-06 10:34:15 +0100 |
commit | 814a7666b9fee09e63c692cdffc0a3f3e6468c14 (patch) | |
tree | 467b11f61ce621408ac08cc2fb098d23d937df2f /lib/ssl/src/tls_connection.erl | |
parent | d8039bc64b57d21d91cc2399a0f7f8a13b628117 (diff) | |
download | otp-814a7666b9fee09e63c692cdffc0a3f3e6468c14.tar.gz otp-814a7666b9fee09e63c692cdffc0a3f3e6468c14.tar.bz2 otp-814a7666b9fee09e63c692cdffc0a3f3e6468c14.zip |
dtls: Hibernation and retransmit timers
Change retransmissions timers to use gen_statem state timeouts. We do
not need a retransmission timer in the state connection as data traffic in
DTLS over UDP is not retransmitted. If the last flight before
transitioning into connection is lost, it will be resent when the peer
resends its last flight. This will also make hibernation testing more
straight forward.
We need more adjustments later to handle a reliable DTLS transport
such as SCTP.
Diffstat (limited to 'lib/ssl/src/tls_connection.erl')
-rw-r--r-- | lib/ssl/src/tls_connection.erl | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/ssl/src/tls_connection.erl b/lib/ssl/src/tls_connection.erl index 97a611afd9..c6e530e164 100644 --- a/lib/ssl/src/tls_connection.erl +++ b/lib/ssl/src/tls_connection.erl @@ -48,7 +48,7 @@ -export([encode_data/3, encode_alert/3]). %% State transition handling --export([next_record/1, next_event/3]). +-export([next_record/1, next_event/3, next_event/4]). %% Handshake handling -export([renegotiate/2, send_handshake/2, @@ -118,7 +118,7 @@ send_handshake_flight(#state{socket = Socket, transport_cb = Transport, flight_buffer = Flight} = State0) -> send(Transport, Socket, Flight), - State0#state{flight_buffer = []}. + {State0#state{flight_buffer = []}, []}. queue_change_cipher(Msg, #state{negotiated_version = Version, flight_buffer = Flight0, @@ -345,12 +345,12 @@ connection(internal, #hello_request{}, renegotiation = {Renegotiation, _}} = State0) -> Hello = tls_handshake:client_hello(Host, Port, ConnectionStates0, SslOpts, Cache, CacheCb, Renegotiation, Cert), - State1 = send_handshake(Hello, State0), + {State1, Actions} = send_handshake(Hello, State0), {Record, State} = next_record( State1#state{session = Session0#session{session_id = Hello#client_hello.session_id}}), - next_event(hello, Record, State); + next_event(hello, Record, State, Actions); connection(internal, #client_hello{} = Hello, #state{role = server, allow_renegotiate = true} = State0) -> %% Mitigate Computational DoS attack |