summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_router.erl6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/ejabberd_router.erl b/src/ejabberd_router.erl
index fcc89375..74352254 100644
--- a/src/ejabberd_router.erl
+++ b/src/ejabberd_router.erl
@@ -80,7 +80,11 @@ do_route(From, To, Packet) ->
?DEBUG("routed to process ~p~n", [Pid]),
Pid ! {route, From, To, Packet};
Rs ->
- R = lists:nth(erlang:phash(now(), length(Rs)), Rs),
+ Rs1 = case [R || R <- Rs, node(R#route.pid) == node()] of
+ [] -> Rs;
+ LRs -> LRs
+ end,
+ R = lists:nth(erlang:phash(now(), length(Rs1)), Rs1),
Pid = R#route.pid,
?DEBUG("routed to process ~p~n", [Pid]),
Pid ! {route, From, To, Packet}