File 0163-ssl-Fix-timing-issues.patch of Package erlang

From 0e1e2b4af41eb5db6ca3547cbc9946cbdb5f9433 Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Wed, 11 Mar 2026 14:42:17 +0100
Subject: [PATCH 3/3] ssl: Fix timing issues

---
 lib/ssl/test/ssl_api_SUITE.erl | 32 +++++++++++++++++++-------------
 lib/ssl/test/ssl_test_lib.erl  |  1 +
 lib/ssl/test/tls_api_SUITE.erl |  6 +++++-
 3 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/lib/ssl/test/ssl_api_SUITE.erl b/lib/ssl/test/ssl_api_SUITE.erl
index c414c3e0ae..6aaf066240 100644
--- a/lib/ssl/test/ssl_api_SUITE.erl
+++ b/lib/ssl/test/ssl_api_SUITE.erl
@@ -1025,11 +1025,14 @@ handshake_continue_timeout(Config) when is_list(Config) ->
     Port = ssl_test_lib:inet_port(Server),
 
 
-    ssl_test_lib:start_client_error([{node, ClientNode}, {port, Port},
-                                     {host, Hostname},
-                                     {from, self()},
-                                     {options, [{verify, verify_peer} | ClientOpts]}]),
-    
+    Client = ssl_test_lib:start_client_error([{node, ClientNode}, {port, Port},
+                                              {host, Hostname},
+                                              {from, self()},
+                                              {options, [{verify, verify_peer} | ClientOpts]}]),
+    receive {Client, {error,_}} -> ok
+    after 500 -> ct:log("Didn't get any client msg", [])
+    end,
+
     ssl_test_lib:check_result(Server, {error,timeout}),
     ssl_test_lib:close(Server).
 %%------------------------------------------------------------------
@@ -1137,14 +1140,17 @@ hello_server_cancel(Config) when is_list(Config) ->
     
     Port = ssl_test_lib:inet_port(Server),
 
-    ssl_test_lib:start_client_error([{node, ClientNode}, {port, Port},
-                                     {host, Hostname},
-                                     {from, self()}, 
-                                     {options, ssl_test_lib:ssl_options([{handshake, hello},
-                                                                         {verify, verify_peer} | ClientOpts
-                                                                        ], Config)},
-                                     {continue_options, proplists:delete(reuseaddr, ClientOpts)}]),
-    
+    Client = ssl_test_lib:start_client_error([{node, ClientNode}, {port, Port},
+                                              {host, Hostname},
+                                              {from, self()}, 
+                                              {options, ssl_test_lib:ssl_options([{handshake, hello},
+                                                                                  {verify, verify_peer} | ClientOpts
+                                                                                 ], Config)},
+                                              {continue_options, proplists:delete(reuseaddr, ClientOpts)}]),
+    receive {Client, {error,_}} -> ok
+    after 500 -> ct:log("Didn't get any client msg", [])
+    end,
+
     ssl_test_lib:check_result(Server, ok).
 
 %%--------------------------------------------------------------------
diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl
index 7979dc5f9b..94b20438fb 100644
--- a/lib/ssl/test/ssl_test_lib.erl
+++ b/lib/ssl/test/ssl_test_lib.erl
@@ -3558,6 +3558,7 @@ openssl_allows_server_renegotiate(Config) ->
 
 
 enough_openssl_crl_support("OpenSSL 0." ++ _) -> false;
+enough_openssl_crl_support("OpenSSL 1.0." ++ _) -> false;
 enough_openssl_crl_support(_) -> true.
 
 wait_for_openssl_server(Port, tls) ->
diff --git a/lib/ssl/test/tls_api_SUITE.erl b/lib/ssl/test/tls_api_SUITE.erl
index 39a195f26e..65065d7413 100644
--- a/lib/ssl/test/tls_api_SUITE.erl
+++ b/lib/ssl/test/tls_api_SUITE.erl
@@ -576,10 +576,12 @@ tls_reset_in_active_once(Config) when is_list(Config) ->
     {_ClientNode, _ServerNode, Hostname} = ssl_test_lib:run_where(Config),
     TcpOpts = [binary, {reuseaddr, true}],
     Port = ssl_test_lib:inet_port(node()),
+    Me = self(),
     Server = fun() ->
                      case proplists:get_value(transport, Config) of
                          socket ->
                              {ok, Listen} = tls_socket_tcp:listen(Port, TcpOpts),
+                             Me ! continue,
                              {ok, TcpServerSocket} = socket:accept(Listen),
                              {ok, ServerSocket} = ssl:handshake(TcpServerSocket, ServerOpts),
                              lists:foreach(
@@ -591,6 +593,7 @@ tls_reset_in_active_once(Config) when is_list(Config) ->
                              socket:close(Listen);
                          _ ->
                              {ok, Listen} = gen_tcp:listen(Port, TcpOpts),
+                             Me ! continue,
                              {ok, TcpServerSocket} = gen_tcp:accept(Listen),
                              {ok, ServerSocket} = ssl:handshake(TcpServerSocket, ServerOpts),
                              lists:foreach(
@@ -603,7 +606,8 @@ tls_reset_in_active_once(Config) when is_list(Config) ->
                      end
 	     end,
     spawn_link(Server),
-    {ok, Socket} = ssl:connect(Hostname, Port, [{active, false} | ClientOpts]),
+    receive continue -> ok end,
+    {ok, Socket} = ssl:connect(Hostname, Port, [{active, false}, {reuseaddr, true} | ClientOpts]),
     Result = tls_closed_in_active_once_loop(Socket),
     ssl:close(Socket),
     case Result of
-- 
2.51.0

openSUSE Build Service is sponsored by