aboutsummaryrefslogtreecommitdiffstats
path: root/erts/preloaded/src/prim_inet.erl
diff options
context:
space:
mode:
authorRaimo Niskanen <[email protected]>2019-02-15 14:09:24 +0100
committerRaimo Niskanen <[email protected]>2019-02-15 14:09:24 +0100
commit9b5a9ea1e8c19469fd4eb7f3e8b9e4c97f6f3656 (patch)
tree2467acc2b606891687a00c738d6901dcd190b7f5 /erts/preloaded/src/prim_inet.erl
parent83e5069e94209242d59de45bb5f50014413b63e9 (diff)
parent9b93a26e8bda8b5e5bb9cd0a1925d3a2d435cb6c (diff)
downloadotp-9b5a9ea1e8c19469fd4eb7f3e8b9e4c97f6f3656.tar.gz
otp-9b5a9ea1e8c19469fd4eb7f3e8b9e4c97f6f3656.tar.bz2
otp-9b5a9ea1e8c19469fd4eb7f3e8b9e4c97f6f3656.zip
Merge branch 'maint'
Conflicts: erts/preloaded/ebin/prim_inet.beam
Diffstat (limited to 'erts/preloaded/src/prim_inet.erl')
-rw-r--r--erts/preloaded/src/prim_inet.erl16
1 files changed, 13 insertions, 3 deletions
diff --git a/erts/preloaded/src/prim_inet.erl b/erts/preloaded/src/prim_inet.erl
index 4fe570ec53..d5abdd2483 100644
--- a/erts/preloaded/src/prim_inet.erl
+++ b/erts/preloaded/src/prim_inet.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2000-2018. All Rights Reserved.
+%% Copyright Ericsson AB 2000-2019. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
@@ -172,8 +172,18 @@ close(S) when is_port(S) ->
%% and is a contradiction in itself.
%% We have hereby done our best...
%%
- Tref = erlang:start_timer(T * 1000, self(), close_port),
- close_pend_loop(S, Tref, undefined);
+ case subscribe(S, [subs_empty_out_q]) of
+ {ok, [{subs_empty_out_q,0}]} ->
+ close_port(S);
+ {ok, [{subs_empty_out_q,N}]} when N > 0 ->
+ %% Wait for pending output to be sent
+ Tref = erlang:start_timer(T * 1000, self(), close_port),
+ close_pend_loop(S, Tref, N);
+ _ ->
+ %% Subscribe failed - wait full time
+ Tref = erlang:start_timer(T * 1000, self(), close_port),
+ close_pend_loop(S, Tref, undefined)
+ end;
_ -> % Regard this as {ok,{false,_}}
case subscribe(S, [subs_empty_out_q]) of
{ok, [{subs_empty_out_q,N}]} when N > 0 ->