aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngela Anderton Andin <[email protected]>2017-10-25 11:02:51 +0200
committerIngela Anderton Andin <[email protected]>2017-10-25 11:02:51 +0200
commitb232eb7b2367019164c5ce29a82dae03d455b986 (patch)
tree208dfa1f4b9bfae270fed9caae787692e7264a2e
parentc26f0e58f440859abbfb9b4e3570713ac722e0da (diff)
parentbb8477f767a0911eb060916a8028c7472ba678a6 (diff)
downloadotp-b232eb7b2367019164c5ce29a82dae03d455b986.tar.gz
otp-b232eb7b2367019164c5ce29a82dae03d455b986.tar.bz2
otp-b232eb7b2367019164c5ce29a82dae03d455b986.zip
Merge branch 'ingela/inets/http-sync-close/OTP-14696' into maint
* ingela/inets/http-sync-close/OTP-14696: inets: Make sure httpd:stop_service is synchronous
-rw-r--r--lib/inets/src/http_server/httpd.erl9
-rw-r--r--lib/inets/test/inets_SUITE.erl2
2 files changed, 8 insertions, 3 deletions
diff --git a/lib/inets/src/http_server/httpd.erl b/lib/inets/src/http_server/httpd.erl
index 0b632d24e3..540e68e749 100644
--- a/lib/inets/src/http_server/httpd.erl
+++ b/lib/inets/src/http_server/httpd.erl
@@ -99,7 +99,14 @@ start_service(Conf) ->
stop_service({Address, Port}) ->
stop_service({Address, Port, ?DEFAULT_PROFILE});
stop_service({Address, Port, Profile}) ->
- httpd_sup:stop_child(Address, Port, Profile);
+ Name = httpd_util:make_name("httpd_instance_sup", Address, Port, Profile),
+ Pid = whereis(Name),
+ MonitorRef = erlang:monitor(process, Pid),
+ Result = httpd_sup:stop_child(Address, Port, Profile),
+ receive
+ {'DOWN', MonitorRef, _, _, _} ->
+ Result
+ end;
stop_service(Pid) when is_pid(Pid) ->
case service_info(Pid) of
{ok, Info} ->
diff --git a/lib/inets/test/inets_SUITE.erl b/lib/inets/test/inets_SUITE.erl
index 38b8229389..1abd96a228 100644
--- a/lib/inets/test/inets_SUITE.erl
+++ b/lib/inets/test/inets_SUITE.erl
@@ -213,7 +213,6 @@ start_httpd(Config) when is_list(Config) ->
true = lists:member(Pid0, Pids0),
[_|_] = inets:services_info(),
inets:stop(httpd, Pid0),
- ct:sleep(500),
Pids1 = [ServicePid || {_, ServicePid} <- inets:services()],
false = lists:member(Pid0, Pids1),
{ok, Pid0b} =
@@ -222,7 +221,6 @@ start_httpd(Config) when is_list(Config) ->
true = lists:member(Pid0b, Pids0b),
[_|_] = inets:services_info(),
inets:stop(httpd, Pid0b),
- ct:sleep(500),
Pids1 = [ServicePid || {_, ServicePid} <- inets:services()],
false = lists:member(Pid0b, Pids1),
{ok, Pid1} =