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

openSUSE Build Service is sponsored by