diff options
author | Rickard Green <[email protected]> | 2018-05-07 16:57:12 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2018-05-16 13:28:46 +0200 |
commit | bec8b2e08a6e6e404a940c4095133a18ead5e28e (patch) | |
tree | 2fadc8dc93f6acbf3131e2492e8f82e6007cce44 /erts/preloaded/src/erlang.erl | |
parent | 78f639da759cd3f8b5f28bc86ec404f3c3db60f4 (diff) | |
download | otp-bec8b2e08a6e6e404a940c4095133a18ead5e28e.tar.gz otp-bec8b2e08a6e6e404a940c4095133a18ead5e28e.tar.bz2 otp-bec8b2e08a6e6e404a940c4095133a18ead5e28e.zip |
Replace previous suspend in setnode/3
Diffstat (limited to 'erts/preloaded/src/erlang.erl')
-rw-r--r-- | erts/preloaded/src/erlang.erl | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl index cf746c3d51..3a42e841e2 100644 --- a/erts/preloaded/src/erlang.erl +++ b/erts/preloaded/src/erlang.erl @@ -1705,12 +1705,26 @@ setnode(_P1, _P2) -> erlang:nif_error(undefined). %% setnode/3 --spec erlang:setnode(P1, P2, P3) -> dist_handle() when - P1 :: atom(), - P2 :: port(), - P3 :: {term(), term(), term(), term()}. -setnode(_P1, _P2, _P3) -> - erlang:nif_error(undefined). +-spec erlang:setnode(Node, DistCtrlr, Opts) -> dist_handle() when + Node :: atom(), + DistCtrlr :: port() | pid(), + Opts :: {integer(), integer(), atom(), atom()}. +setnode(Node, DistCtrlr, {Flags, Ver, IC, OC} = Opts) when erlang:is_atom(IC), + erlang:is_atom(OC) -> + case case erts_internal:create_dist_channel(Node, DistCtrlr, + Flags, Ver) of + {ok, DH} -> DH; + {message, Ref} -> receive {Ref, Res} -> Res end; + Err -> Err + end of + Error when erlang:is_atom(Error) -> + erlang:error(Error, [Node, DistCtrlr, Opts]); + DHandle -> + DHandle + end; +setnode(Node, DistCtrlr, Opts) -> + erlang:error(badarg, [Node, DistCtrlr, Opts]). + %% size/1 %% Shadowed by erl_bif_types: erlang:size/1 |