summaryrefslogtreecommitdiff
path: root/src/mod_muc/mod_muc_room.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2005-06-20 03:18:13 +0000
committerAlexey Shchepin <alexey@process-one.net>2005-06-20 03:18:13 +0000
commit4098c3ecbae91929039410ddf45f400b6e87db39 (patch)
tree752f096271a724d865377e34d896529229756808 /src/mod_muc/mod_muc_room.erl
parent* src/web/ejabberd_web_admin.erl: Bugfix (diff)
* (all): Enhanced virtual hosting support
SVN Revision: 370
Diffstat (limited to 'src/mod_muc/mod_muc_room.erl')
-rw-r--r--src/mod_muc/mod_muc_room.erl25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl
index b1a5d401..15bacbfe 100644
--- a/src/mod_muc/mod_muc_room.erl
+++ b/src/mod_muc/mod_muc_room.erl
@@ -14,8 +14,8 @@
%% External exports
--export([start/5,
- start/4,
+-export([start/6,
+ start/5,
route/4]).
%% gen_fsm callbacks
@@ -59,6 +59,7 @@
-record(state, {room,
host,
+ server_host,
access,
jid,
config = #config{},
@@ -82,11 +83,12 @@
%%%----------------------------------------------------------------------
%%% API
%%%----------------------------------------------------------------------
-start(Host, Access, Room, Creator, Nick) ->
- gen_fsm:start(?MODULE, [Host, Access, Room, Creator, Nick], ?FSMOPTS).
+start(Host, ServerHost, Access, Room, Creator, Nick) ->
+ gen_fsm:start(?MODULE, [Host, ServerHost, Access, Room, Creator, Nick],
+ ?FSMOPTS).
-start(Host, Access, Room, Opts) ->
- gen_fsm:start(?MODULE, [Host, Access, Room, Opts], ?FSMOPTS).
+start(Host, ServerHost, Access, Room, Opts) ->
+ gen_fsm:start(?MODULE, [Host, ServerHost, Access, Room, Opts], ?FSMOPTS).
%%%----------------------------------------------------------------------
%%% Callback functions from gen_fsm
@@ -99,16 +101,18 @@ start(Host, Access, Room, Opts) ->
%% ignore |
%% {stop, StopReason}
%%----------------------------------------------------------------------
-init([Host, Access, Room, Creator, Nick]) ->
+init([Host, ServerHost, Access, Room, Creator, Nick]) ->
State = set_affiliation(Creator, owner,
#state{host = Host,
+ server_host = ServerHost,
access = Access,
room = Room,
jid = jlib:make_jid(Room, Host, ""),
just_created = true}),
{ok, normal_state, State};
-init([Host, Access, Room, Opts]) ->
+init([Host, ServerHost, Access, Room, Opts]) ->
State = set_opts(Opts, #state{host = Host,
+ server_host = ServerHost,
access = Access,
room = Room,
jid = jlib:make_jid(Room, Host, "")}),
@@ -652,7 +656,8 @@ handle_info(_Info, StateName, StateData) ->
%% Returns: any
%%----------------------------------------------------------------------
terminate(_Reason, _StateName, StateData) ->
- mod_muc:room_destroyed(StateData#state.host, StateData#state.room),
+ mod_muc:room_destroyed(StateData#state.host, StateData#state.room,
+ StateData#state.server_host),
ok.
%%%----------------------------------------------------------------------
@@ -732,7 +737,7 @@ set_affiliation_and_reason(JID, Affiliation, Reason, StateData) ->
get_affiliation(JID, StateData) ->
{_AccessRoute, _AccessCreate, AccessAdmin} = StateData#state.access,
Res =
- case acl:match_rule(AccessAdmin, JID) of
+ case acl:match_rule(StateData#state.server_host, AccessAdmin, JID) of
allow ->
owner;
_ ->