]> granicus.if.org Git - ejabberd/commitdiff
Store imported room in the correct ServerHost (#2874)
authorBadlop <badlop@process-one.net>
Thu, 2 May 2019 18:22:46 +0000 (20:22 +0200)
committerBadlop <badlop@process-one.net>
Thu, 2 May 2019 18:32:10 +0000 (20:32 +0200)
src/prosody2ejabberd.erl

index 3fc3cc8b500fa4e1fd6e837e5ab27d1fb83dd4d5..6eb5689c1bb081b0e568892e2dfd93e16a83aeba 100644 (file)
@@ -198,7 +198,7 @@ convert_data(_Host, "config", _User, [Data]) ->
     RoomCfg = convert_room_config(Data),
     case proplists:get_bool(<<"persistent">>, Config) of
        true when RoomJID /= error ->
-           mod_muc:store_room(ejabberd_config:get_myname(), RoomJID#jid.lserver,
+           mod_muc:store_room(find_serverhost(RoomJID#jid.lserver), RoomJID#jid.lserver,
                               RoomJID#jid.luser, RoomCfg);
        _ ->
            ok
@@ -522,6 +522,19 @@ el_to_offline_msg(LUser, LServer, #xmlel{attrs = Attrs} = El) ->
            []
     end.
 
+find_serverhost(Host) ->
+    [ServerHost] =
+       lists:filter(
+         fun(ServerHost) ->
+                 case gen_mod:is_loaded(ServerHost, mod_muc) of
+                     true ->
+                         Host == gen_mod:get_module_opt_host(ServerHost, mod_muc, <<"conference.@HOST@">>);
+                     false ->
+                         false
+                 end
+         end, ejabberd_config:get_myhosts()),
+    ServerHost.
+
 deserialize(L) ->
     deserialize(L, #xmlel{}, []).