aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2010-06-08 14:58:14 +0000
committerErlang/OTP <[email protected]>2010-06-08 14:58:14 +0000
commit12c4d172d373b743fcd4a61584ca2aaeb25cb926 (patch)
treed63bccc6676454e4e7aa7f0527f79b9eea7b04de /lib/kernel
parent1db9890d2d52e37ea134545453319a748fd84e10 (diff)
downloadotp-12c4d172d373b743fcd4a61584ca2aaeb25cb926.tar.gz
otp-12c4d172d373b743fcd4a61584ca2aaeb25cb926.tar.bz2
otp-12c4d172d373b743fcd4a61584ca2aaeb25cb926.zip
OTP-8686 Bugfix net_kernel
A bug introduced in kernel-2.13.5.3 has been fixed.
Diffstat (limited to 'lib/kernel')
-rw-r--r--lib/kernel/src/net_kernel.erl16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/kernel/src/net_kernel.erl b/lib/kernel/src/net_kernel.erl
index 0e17c059e5..0e5cc8c2c6 100644
--- a/lib/kernel/src/net_kernel.erl
+++ b/lib/kernel/src/net_kernel.erl
@@ -1086,11 +1086,11 @@ do_spawn(SpawnFuncArgs, SpawnOpts, State) ->
spawn_func(link,{From,Tag},M,F,A,Gleader) ->
link(From),
- async_gen_server_reply({From,Tag},self()), %% ahhh
+ gen_server:reply({From,Tag},self()), %% ahhh
group_leader(Gleader,self()),
apply(M,F,A);
spawn_func(_,{From,Tag},M,F,A,Gleader) ->
- async_gen_server_reply({From,Tag},self()), %% ahhh
+ gen_server:reply({From,Tag},self()), %% ahhh
group_leader(Gleader,self()),
apply(M,F,A).
@@ -1527,10 +1527,12 @@ async_gen_server_reply(From, Msg) ->
{Pid, Tag} = From,
M = {Tag, Msg},
case catch erlang:send(Pid, M, [nosuspend, noconnect]) of
- true ->
- M;
- false ->
- spawn(fun() -> gen_server:reply(From, Msg) end);
- EXIT ->
+ ok ->
+ ok;
+ nosuspend ->
+ spawn(fun() -> catch erlang:send(Pid, M, [noconnect]) end);
+ noconnect ->
+ ok; % The gen module takes care of this case.
+ {'EXIT', _}=EXIT ->
EXIT
end.