aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssh/test
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2018-12-28 12:11:16 +0100
committerErlang/OTP <[email protected]>2018-12-28 12:11:16 +0100
commit08df5db981fe8ca7065d5204821e9c0d18b5533d (patch)
treeb23e976e98c7f141b9e6dfdf691a51fa9cbfc381 /lib/ssh/test
parent5a5bb6f80b63b5125cfdd485ef908afb995b4f14 (diff)
parent9b8575437a3c84eab77453279d8844c52485216c (diff)
downloadotp-08df5db981fe8ca7065d5204821e9c0d18b5533d.tar.gz
otp-08df5db981fe8ca7065d5204821e9c0d18b5533d.tar.bz2
otp-08df5db981fe8ca7065d5204821e9c0d18b5533d.zip
Merge branch 'hans/ssh/port_leak/OTP-15397' into maint-20
* hans/ssh/port_leak/OTP-15397: ssh: Fix port leakage for daemons failing at start ssh: Add port close test
Diffstat (limited to 'lib/ssh/test')
-rw-r--r--lib/ssh/test/ssh_basic_SUITE.erl20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/ssh/test/ssh_basic_SUITE.erl b/lib/ssh/test/ssh_basic_SUITE.erl
index 365f25fabb..0131654dd0 100644
--- a/lib/ssh/test/ssh_basic_SUITE.erl
+++ b/lib/ssh/test/ssh_basic_SUITE.erl
@@ -37,6 +37,7 @@
cli/1,
close/1,
daemon_already_started/1,
+ daemon_error_closes_port/1,
daemon_opt_fd/1,
multi_daemon_opt_fd/1,
double_close/1,
@@ -108,6 +109,7 @@ all() ->
{group, internal_error},
{group, rsa_host_key_is_actualy_ecdsa},
daemon_already_started,
+ daemon_error_closes_port,
double_close,
daemon_opt_fd,
multi_daemon_opt_fd,
@@ -797,6 +799,24 @@ daemon_already_started(Config) when is_list(Config) ->
ssh:stop_daemon(Pid).
%%--------------------------------------------------------------------
+%%% Test that a failed daemon start does not leave the port open
+daemon_error_closes_port(Config) ->
+ GoodSystemDir = proplists:get_value(data_dir, Config),
+ Port = ssh_test_lib:inet_port(),
+ {error,_} = ssh_test_lib:daemon(Port, []), % No system dir
+ case ssh_test_lib:daemon(Port, [{system_dir, GoodSystemDir}]) of
+ {error,eaddrinuse} ->
+ {fail, "Port leakage"};
+ {error,Error} ->
+ ct:log("Strange error: ~p",[Error]),
+ {fail, "Strange error"};
+ {Pid, _Host, Port} ->
+ %% Ok
+ ssh:stop_daemon(Pid)
+ end.
+
+
+%%--------------------------------------------------------------------
%%% check that known_hosts is updated correctly
known_hosts(Config) when is_list(Config) ->
SystemDir = proplists:get_value(data_dir, Config),