File 4684-Increase-recvbuf-for-dtls-tests.patch of Package erlang

From c6852458af2c34174c39d9b776441bff56d23200 Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Wed, 16 Feb 2022 17:20:25 +0100
Subject: [PATCH 4/4] Increase recvbuf for dtls tests

Some linux machines have small default buffers set and ssl can't
even do the handshake if many small packets is used.
---
 lib/ssl/test/ssl_test_lib.erl | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl
index ad9bac2f73..12e6c979e7 100644
--- a/lib/ssl/test/ssl_test_lib.erl
+++ b/lib/ssl/test/ssl_test_lib.erl
@@ -217,6 +217,7 @@
 -define(SLEEP, 1000).
 -define(DEFAULT_CURVE, secp256r1).
 -define(PRINT_DEPTH, 100).
+-define(DTLS_RECBUF, 32768).
 
 %%====================================================================
 %% API
@@ -946,7 +947,8 @@ run_client(Opts) ->
     Port = proplists:get_value(port, Opts),
     Pid = proplists:get_value(from, Opts),
     Transport =  proplists:get_value(transport, Opts, ssl),
-    Options = proplists:get_value(options, Opts),
+    Options0 = proplists:get_value(options, Opts),
+    Options = patch_dtls_options(Options0),
     ContOpts = proplists:get_value(continue_options, Opts, []),
     ct:log("~p:~p~n~p:connect(~p, ~p)@~p~n", [?MODULE,?LINE, Transport, Host, Port, Node]),
     ct:log("SSLOpts:~n ~0.p", [format_options(Options)]),
@@ -1295,6 +1297,16 @@ wait_for_result(Pid, Msg) ->
 	%%     Unexpected
     end.
 
+patch_dtls_options(Options0) ->
+    case proplists:get_value(protocol, Options0) of
+        dtls ->
+            case proplists:get_value(recbuf, Options0, undefined) of
+                undefined -> [{recbuf, ?DTLS_RECBUF}|Options0];
+                _ -> Options0
+            end;
+        _ ->    Options0
+    end.
+
 format_options([{cacerts, Certs}|R]) ->
     [{cacerts, format_certs(Certs)} | format_options(R)];
 format_options([{cert, Certs}|R]) ->
@@ -2665,11 +2677,10 @@ openssl_tls_version_support(Version, Config0) ->
     CertFile = proplists:get_value(certfile, ServerOpts),
     KeyFile = proplists:get_value(keyfile, ServerOpts),
     Exe = "openssl",
+    Opts0 = [{versions, [Version]}, {verify, verify_none}],
     {Proto, Opts} = case is_tls_version(Version) of
-                        true ->
-                            {tls, [{protocol,tls}, {versions, [Version]}]};
-                        false ->
-                            {dtls, [{protocol,dtls}, {versions, [Version]}]}
+                        true  -> {tls, [{protocol,tls}|Opts0]};
+                        false -> {dtls, patch_dtls_options([{protocol, dtls}|Opts0])}
                     end,
     Args0 = case Proto of
                 tls ->
@@ -2683,7 +2694,6 @@ openssl_tls_version_support(Version, Config0) ->
             end,
     Args = maybe_force_ipv4(Args0),
     OpensslPort = portable_open_port(Exe, Args),
-
     try wait_for_openssl_server(Port, Proto) of
         ok ->
             case  ssl:connect("localhost", Port, Opts, 5000) of
@@ -3247,7 +3257,7 @@ enough_openssl_crl_support(_) -> true.
 wait_for_openssl_server(Port, tls) ->
     do_wait_for_openssl_tls_server(Port, 10);
 wait_for_openssl_server(_Port, dtls) ->
-    ct:sleep(?SLEEP),
+    ct:sleep(?SLEEP div 2),
     ok. %% No need to wait for DTLS over UDP server
         %% client will retransmitt until it is up.
         %% But wait a little for openssl debug printing
-- 
2.34.1

openSUSE Build Service is sponsored by