Do not allow sender to be suspended for any reason

Project: http://git-wip-us.apache.org/repos/asf/couchdb-rexi/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-rexi/commit/dd0e3f99
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-rexi/tree/dd0e3f99
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-rexi/diff/dd0e3f99

Branch: refs/heads/import
Commit: dd0e3f998175a3ac9abc28f7ebc4602b666ff175
Parents: 140cb8d
Author: Adam Kocoloski <[email protected]>
Authored: Tue Mar 29 17:01:23 2011 -0400
Committer: Adam Kocoloski <[email protected]>
Committed: Tue Mar 29 17:01:23 2011 -0400

----------------------------------------------------------------------
 src/rexi.erl | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-rexi/blob/dd0e3f99/src/rexi.erl
----------------------------------------------------------------------
diff --git a/src/rexi.erl b/src/rexi.erl
index 22097b3..eeda1c6 100644
--- a/src/rexi.erl
+++ b/src/rexi.erl
@@ -59,7 +59,15 @@ cast(Node, MFA) ->
 -spec cast(node(), pid(), {atom(), atom(), list()}) -> reference().
 cast(Node, Caller, MFA) ->
     Ref = make_ref(),
-    ok = gen_server:cast({?SERVER, Node}, {doit, {Caller,Ref}, get(nonce), 
MFA}),
+    Msg = {'$gen_cast', {doit, {Caller, Ref}, get(nonce), MFA}},
+    case erlang:send({?SERVER, Node}, Msg, [noconnect, nosuspend]) of
+        noconnect ->
+            spawn(erlang, send, [{?SERVER, Node}, Msg]);
+        nosuspend ->
+            spawn(erlang, send, [{?SERVER, Node}, Msg]);
+        _ ->
+            ok
+    end,
     Ref.
 
 %% @doc Sends an async kill signal to the remote process associated with Ref.

Reply via email to