diff options
author | Ingela Anderton Andin <[email protected]> | 2016-10-03 17:13:30 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2016-10-04 14:01:05 +0200 |
commit | deab6591008dd5205e509aedb047a0745afe3775 (patch) | |
tree | 5017e080ffd04c3745e6014d50ee6c08112825bf | |
parent | d0272e2d855d62c599d6ab8f2762d67cb1fea061 (diff) | |
download | otp-deab6591008dd5205e509aedb047a0745afe3775.tar.gz otp-deab6591008dd5205e509aedb047a0745afe3775.tar.bz2 otp-deab6591008dd5205e509aedb047a0745afe3775.zip |
ssl: Correct tests tcp stream handling
Data collection function active_once_raw/4 did not handle streamed
data correctly (it assumed the stream was "packet oriented"),
which could result in that the test case perceived that
it did not receive all data even though it did.
-rw-r--r-- | lib/ssl/test/ssl_packet_SUITE.erl | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/lib/ssl/test/ssl_packet_SUITE.erl b/lib/ssl/test/ssl_packet_SUITE.erl index 81a49776e4..942e68967a 100644 --- a/lib/ssl/test/ssl_packet_SUITE.erl +++ b/lib/ssl/test/ssl_packet_SUITE.erl @@ -2011,26 +2011,19 @@ active_once_raw(Socket, Data, N) -> active_once_raw(_, _, 0, _) -> ok; -active_once_raw(Socket, Data, N, Acc) -> - receive - {ssl, Socket, Byte} when length(Byte) == 1 -> - ssl:setopts(Socket, [{active, once}]), +active_once_raw(Socket, Data, N, Acc0) -> + case lists:prefix(Data, Acc0) of + true -> + DLen = length(Data), + Start = DLen + 1, + Len = length(Acc0) - DLen, + Acc = string:substr(Acc0, Start, Len), + active_once_raw(Socket, Data, N-1, Acc); + false -> receive - {ssl, Socket, _} -> - ssl:setopts(Socket, [{active, once}]), - active_once_raw(Socket, Data, N-1, []) - end; - {ssl, Socket, Data} -> - ssl:setopts(Socket, [{active, once}]), - active_once_raw(Socket, Data, N-1, []); - {ssl, Socket, Other} -> - case Acc ++ Other of - Data -> - ssl:setopts(Socket, [{active, once}]), - active_once_raw(Socket, Data, N-1, []); - NewAcc -> + {ssl, Socket, Info} -> ssl:setopts(Socket, [{active, once}]), - active_once_raw(Socket, Data, N, NewAcc) + active_once_raw(Socket, Data, N, Acc0 ++ Info) end end. |