File 0591-ssl-Correct-suite-to-handle-streamed-TCP-data-correc.patch of Package erlang
From 2a7b1b96c8f22475773dfc6de17e2a9c44069236 Mon Sep 17 00:00:00 2001
From: Ingela Anderton Andin <ingela@erlang.org>
Date: Mon, 16 Nov 2020 14:32:24 +0100
Subject: [PATCH 2/6] ssl: Correct suite to handle streamed TCP data correctly
---
lib/ssl/test/ssl_test_lib.erl | 10 ++++++++--
lib/ssl/test/tls_api_SUITE.erl | 34 +++++++++++++++-------------------
2 files changed, 23 insertions(+), 21 deletions(-)
diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl
index f71cce6628..f2cbba5d44 100644
--- a/lib/ssl/test/ssl_test_lib.erl
+++ b/lib/ssl/test/ssl_test_lib.erl
@@ -2602,12 +2602,18 @@ active_recv(_Socket, N, Acc) when N < 0 ->
active_recv(Socket, N, Acc) ->
receive
{ssl, Socket, Bytes} ->
- active_recv(Socket, N-length(Bytes), Acc ++ Bytes);
+ active_recv(Socket, N-data_length(Bytes), Acc ++ Bytes);
{Socket, {data, Bytes0}} ->
Bytes = filter_openssl_debug_data(Bytes0),
- active_recv(Socket, N-length(Bytes), Acc ++ Bytes)
+ active_recv(Socket, N-data_length(Bytes), Acc ++ Bytes)
end.
+
+data_length(Bytes) when is_list(Bytes) ->
+ length(Bytes);
+data_length(Bytes) when is_binary(Bytes)->
+ size(Bytes).
+
filter_openssl_debug_data(Bytes) ->
re:replace(Bytes,
"(read.*\n|write to.*\n|[\\dabcdefABCDEF]{4,4} -.*\n|>>> .*\n|<<< .*\n| \\d\\d.*\n|KEYUPDATE\n|.*Read BLOCK\n)*",
diff --git a/lib/ssl/test/tls_api_SUITE.erl b/lib/ssl/test/tls_api_SUITE.erl
index 1c794eefa7..51d9ffaa36 100644
--- a/lib/ssl/test/tls_api_SUITE.erl
+++ b/lib/ssl/test/tls_api_SUITE.erl
@@ -811,15 +811,9 @@ upgrade_result(Socket) ->
ok = ssl:send(Socket, "Hello world"),
%% Make sure binary is inherited from tcp socket and that we do
%% not get the list default!
- receive
- {ssl, _, <<"H">>} ->
- receive
- {ssl, _, <<"ello world">>} ->
- ok
- end;
- {ssl, _, <<"Hello world">>} ->
- ok
- end.
+ <<"Hello world">> = ssl_test_lib:active_recv(Socket, length("Hello world")),
+ ok.
+
tls_downgrade_result(Socket, Pid) ->
ok = ssl_test_lib:send_recv_result(Socket),
Pid ! {self(), ready},
@@ -831,16 +825,8 @@ tls_downgrade_result(Socket, Pid) ->
{ok, TCPSocket} ->
inet:setopts(TCPSocket, [{active, true}]),
gen_tcp:send(TCPSocket, "Downgraded"),
- receive
- {tcp, TCPSocket, <<"Downgraded">>} ->
- ct:sleep(?SLEEP),
- ok;
- {tcp_closed, TCPSocket} ->
- ct:fail("Did not receive TCP data"),
- ok;
- Other ->
- {error, Other}
- end;
+ <<"Downgraded">> = active_tcp_recv(TCPSocket, length("Downgraded")),
+ ok;
{error, timeout} ->
ct:comment("Timed out, downgrade aborted"),
ok;
@@ -912,3 +898,13 @@ tls_socket_options_result(Socket, Options, DefaultValues, NewOptions, NewValues)
ct:log("All opts ~p~n", [All]),
ok.
+active_tcp_recv(Socket, N) ->
+ active_tcp_recv(Socket, N, []).
+
+active_tcp_recv(_Socket, 0, Acc) ->
+ Acc;
+active_tcp_recv(Socket, N, Acc) ->
+ receive
+ {tcp, Socket, Bytes} ->
+ active_tcp_recv(Socket, N-size(Bytes), Acc ++ Bytes)
+ end.
--
2.26.2