File 1283-Fix-incorrect-DTLS-retransmission-timeout.patch of Package erlang

From e739b0907d8254f181c79f5c64fcc3805414589d Mon Sep 17 00:00:00 2001
From: Author Name <shaienn@mail.ru>
Date: Thu, 25 May 2023 12:57:25 +0300
Subject: [PATCH] Fix incorrect DTLS retransmission timeout

---
 lib/ssl/src/dtls_connection.erl | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/ssl/src/dtls_connection.erl b/lib/ssl/src/dtls_connection.erl
index 899e7d3305..aa93b5482a 100644
--- a/lib/ssl/src/dtls_connection.erl
+++ b/lib/ssl/src/dtls_connection.erl
@@ -734,11 +734,12 @@ handle_client_hello(#client_hello{client_version = ClientVersion} = Hello, State
 
 handle_state_timeout(flight_retransmission_timeout, StateName,
                      #state{protocol_specific = 
-                                #{flight_state := {retransmit, _NextTimeout}}} = State0) ->
+                                #{flight_state := {retransmit, CurrentTimeout}}} = State0) ->
     {State1, Actions0} = dtls_gen_connection:send_handshake_flight(State0, 
                                                                    retransmit_epoch(StateName, State0)),
-    {next_state, StateName, State, Actions} = 
+    {next_state, StateName, #state{protocol_specific = PS} = State2, Actions} =
         dtls_gen_connection:next_event(StateName, no_record, State1, Actions0),
+    State = State2#state{protocol_specific = PS#{flight_state => {retransmit, new_timeout(CurrentTimeout)}}},
     %% This will reset the retransmission timer by repeating the enter state event
     {repeat_state, State, Actions}.
 
@@ -813,7 +814,7 @@ handle_flight_timer(#state{protocol_specific = #{flight_state := reliable}} = St
     {State, []}.
 
 start_retransmision_timer(Timeout, #state{protocol_specific = PS} = State) ->
-    {State#state{protocol_specific = PS#{flight_state => {retransmit, new_timeout(Timeout)}}}, 
+    {State#state{protocol_specific = PS#{flight_state => {retransmit, Timeout}}},
      [{state_timeout, Timeout, flight_retransmission_timeout}]}.
 
 new_timeout(N) when N =< 30000 ->
-- 
2.35.3

openSUSE Build Service is sponsored by