summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gen_server2.erl12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl
index ef14813fef..11bb66d743 100644
--- a/src/gen_server2.erl
+++ b/src/gen_server2.erl
@@ -3,7 +3,6 @@
%%
%% 1) the module name is gen_server2
%%
-%%
%% 2) more efficient handling of selective receives in callbacks
%% gen_server2 processes drain their message queue into an internal
%% buffer before invoking any callback module functions. Messages are
@@ -13,6 +12,10 @@
%% As a result of the draining, any selective receive invoked inside a
%% callback is less likely to have to scan a large message queue.
%%
+%% 3) gen_server2:cast is guaranteed to be order-preserving
+%% The original code could reorder messages when communicating with a
+%% process on a remote node that was not currently connected.
+%%
%% All modifications are (C) 2009 LShift Ltd.
%% ``The contents of this file are subject to the Erlang Public License,
@@ -360,12 +363,7 @@ process_msg(Parent, Name, State, Mod, Time, Queue, Debug, Msg) ->
%%% Send/recive functions
%%% ---------------------------------------------------
do_send(Dest, Msg) ->
- case catch erlang:send(Dest, Msg, [noconnect]) of
- noconnect ->
- spawn(erlang, send, [Dest,Msg]);
- Other ->
- Other
- end.
+ catch erlang:send(Dest, Msg).
do_multi_call(Nodes, Name, Req, infinity) ->
Tag = make_ref(),