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