LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File 0285-dtls-Trigger-resend-in-abbreviated-handshake-if-chan.patch of Package erlang (Project home:Ledest:erlang:20)

From 828190a32c1ba77036c913b6f73711b78b5f27bf Mon Sep 17 00:00:00 2001
From: Ingela Anderton Andin <ingela@erlang.org>
Date: Tue, 2 Jan 2018 18:45:25 +0100
Subject: [PATCH] dtls: Trigger resend in abbreviated handshake if
 change_cipher_spec is received to early.

---
 lib/ssl/src/dtls_connection.erl | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/ssl/src/dtls_connection.erl b/lib/ssl/src/dtls_connection.erl
index 3b5a548f72..ee46320225 100644
--- a/lib/ssl/src/dtls_connection.erl
+++ b/lib/ssl/src/dtls_connection.erl
@@ -570,6 +570,12 @@ hello(internal, {handshake, {#client_hello{cookie = <<>>} = Handshake, _}}, Stat
 hello(internal, {handshake, {#hello_verify_request{} = Handshake, _}}, State) ->
     %% hello_verify should not be in handshake history
     {next_state, ?FUNCTION_NAME, State, [{next_event, internal, Handshake}]};
+hello(internal,  #change_cipher_spec{type = <<1>>}, State0) ->
+    {State1, Actions0} = send_handshake_flight(State0, retransmit_epoch(?FUNCTION_NAME, State0)),
+    {Record, State2} = next_record(State1),
+    {next_state, ?FUNCTION_NAME, State, Actions} = next_event(?FUNCTION_NAME, Record, State2, Actions0),
+    %% This will reset the retransmission timer by repeating the enter state event
+    {repeat_state, State, Actions};
 hello(info, Event, State) ->
     gen_info(Event, ?FUNCTION_NAME, State);
 hello(state_timeout, Event, State) ->
-- 
2.16.3