aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristoph Scholz <christoph.scholz@gmail.com>2019-03-01 21:41:53 +0100
committerChristoph Scholz <christoph.scholz@gmail.com>2019-03-05 16:51:57 +0100
commitb5fa3b0e2bced1ae105c2fcc4945c82696fae442 (patch)
treefc1a381f9e60a092c8d30e6a56266c900ce0f718 /src
parentHandle info log level when using MySQL (#2541) (diff)
allow room recreate for admins even if nonempty
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc.erl9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mod_muc.erl b/src/mod_muc.erl
index 9d53b8974..96b73891d 100644
--- a/src/mod_muc.erl
+++ b/src/mod_muc.erl
@@ -438,18 +438,21 @@ do_route1(_Host, _ServerHost, _Access, _HistorySize, _RoomShaper,
ejabberd_router:route_error(Packet, Err);
do_route1(Host, ServerHost, Access, HistorySize, RoomShaper,
From, To, Packet, DefRoomOpts, QueueType) ->
- {_AccessRoute, AccessCreate, _AccessAdmin, _AccessPersistent, _AccessMam} = Access,
+ {_AccessRoute, AccessCreate, AccessAdmin, _AccessPersistent, _AccessMam} = Access,
{Room, _, Nick} = jid:tolower(To),
RMod = gen_mod:ram_db_mod(ServerHost, ?MODULE),
case RMod:find_online_room(ServerHost, Room, Host) of
error ->
case is_create_request(Packet) of
true ->
+ IsServiceAdmin = acl:match_rule(ServerHost,
+ AccessAdmin, From) == allow,
case check_user_can_create_room(
ServerHost, AccessCreate, From, Room) and
- ejabberd_hooks:run_fold(check_create_room,
+ (IsServiceAdmin orelse
+ ejabberd_hooks:run_fold(check_create_room,
ServerHost, true,
- [ServerHost, Room, Host]) of
+ [ServerHost, Room, Host])) of
true ->
{ok, Pid} = start_new_room(
Host, ServerHost, Access,