diff --git a/src/ejabberd_router.erl b/src/ejabberd_router.erl index 4939ae1e8..492beb6d3 100644 --- a/src/ejabberd_router.erl +++ b/src/ejabberd_router.erl @@ -424,15 +424,15 @@ balancing_route(From, To, Packet, Rs) -> Value = erlang:system_time(), case [R || R <- Rs, node(R#route.pid) == node()] of [] -> - R = lists:nth(erlang:phash(Value, length(Rs)), Rs), + R = lists:nth(erlang:phash2(Value, length(Rs))+1, Rs), do_route(Packet, R); LRs -> - R = lists:nth(erlang:phash(Value, length(LRs)), LRs), + R = lists:nth(erlang:phash2(Value, length(LRs))+1, LRs), do_route(Packet, R) end; Value -> SRs = lists:ukeysort(#route.local_hint, Rs), - R = lists:nth(erlang:phash(Value, length(SRs)), SRs), + R = lists:nth(erlang:phash2(Value, length(SRs))+1, SRs), do_route(Packet, R) end. diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl index 21c799c6c..8057c9a35 100644 --- a/src/ejabberd_s2s.erl +++ b/src/ejabberd_s2s.erl @@ -429,8 +429,8 @@ choose_pid(From, Pids) -> Ps -> Ps end, Pid = - lists:nth(erlang:phash(jid:remove_resource(From), - length(Pids1)), + lists:nth(erlang:phash2(jid:remove_resource(From), + length(Pids1))+1, Pids1), ?DEBUG("Using ejabberd_s2s_out ~p~n", [Pid]), Pid.