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