diff options
author | Ingela Anderton Andin <[email protected]> | 2017-06-13 10:48:47 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2017-08-08 18:00:25 +0200 |
commit | 9a71819576f6cf3a89fa516de3f6e58b838cdc94 (patch) | |
tree | a7d1e11384c27c67ed4f7788152ecf681da7457f | |
parent | 798924ffd5efff77ba94ea7f54c2e69548d9d07e (diff) | |
download | otp-9a71819576f6cf3a89fa516de3f6e58b838cdc94.tar.gz otp-9a71819576f6cf3a89fa516de3f6e58b838cdc94.tar.bz2 otp-9a71819576f6cf3a89fa516de3f6e58b838cdc94.zip |
ssl: Handle OpenSSL output correctly
Adjust to handle output from OpenSSL in a more general way, so that
"unknown option" should be caught for all cases and the test case
skipped if that is the case and other data form OpenSSL should be
ignored.
-rw-r--r-- | lib/ssl/test/ssl_test_lib.erl | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl index 33497798c5..aa1cb57e5c 100644 --- a/lib/ssl/test/ssl_test_lib.erl +++ b/lib/ssl/test/ssl_test_lib.erl @@ -1429,7 +1429,7 @@ supports_ssl_tls_version(sslv2 = Version) -> Exe = "openssl", Args = ["s_client", VersionFlag], Port = ssl_test_lib:portable_open_port(Exe, Args), - do_supports_ssl_tls_version(Port) + do_supports_ssl_tls_version(Port, "") end; supports_ssl_tls_version(Version) -> @@ -1437,23 +1437,26 @@ supports_ssl_tls_version(Version) -> Exe = "openssl", Args = ["s_client", VersionFlag], Port = ssl_test_lib:portable_open_port(Exe, Args), - do_supports_ssl_tls_version(Port). + do_supports_ssl_tls_version(Port, ""). -do_supports_ssl_tls_version(Port) -> +do_supports_ssl_tls_version(Port, Acc) -> receive - {Port, {data, "u"}} -> - false; - {Port, {data, "unknown option" ++ _}} -> - false; - {Port, {data, Data}} -> - case lists:member("error", string:tokens(Data, ":")) of - true -> - false; - false -> - do_supports_ssl_tls_version(Port) - end + {Port, {data, Data}} -> + case Acc ++ Data of + "unknown option" ++ _ -> + false; + Error when length(Error) >= 11 -> + case lists:member("error", string:tokens(Data, ":")) of + true -> + false; + false -> + do_supports_ssl_tls_version(Port, Error) + end; + _ -> + do_supports_ssl_tls_version(Port, Acc ++ Data) + end after 1000 -> - true + true end. ssl_options(Option, Config) when is_atom(Option) -> |