From 8f27a697c06f0a6534fbef8b92598e9f6c5f480d Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Thu, 15 Sep 2011 08:52:22 +1000 Subject: [PATCH] Only use hash route-balancing when MUC is broadcasted --- src/mod_muc/mod_muc.erl | 1 + src/mod_muc/mod_muc_room.erl | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/mod_muc/mod_muc.erl b/src/mod_muc/mod_muc.erl index 0f7610ff5..13eba7615 100644 --- a/src/mod_muc/mod_muc.erl +++ b/src/mod_muc/mod_muc.erl @@ -46,6 +46,7 @@ node_down/1, migrate/3, get_vh_rooms/1, + is_broadcasted/1, can_use_nick/3]). %% gen_server callbacks diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl index 295e7391a..87c29667b 100644 --- a/src/mod_muc/mod_muc_room.erl +++ b/src/mod_muc/mod_muc_room.erl @@ -3879,10 +3879,15 @@ element_size(El) -> size(xml:element_to_binary(El)). route_stanza(From, To, El) -> - #jid{luser = LUser, lserver = LServer} = To, - case ejabberd_cluster:get_node({LUser, LServer}) of - Node when Node == node() -> - ejabberd_router:route(From, To, El); - _ -> - ok + case mod_muc:is_broadcasted(From#jid.lserver) of + true -> + #jid{luser = LUser, lserver = LServer} = To, + case ejabberd_cluster:get_node({LUser, LServer}) of + Node when Node == node() -> + ejabberd_router:route(From, To, El); + _ -> + ok + end; + false -> + ejabberd_router:route(From, To, El) end.