diff options
author | Alexey Shchepin <alexey@process-one.net> | 2003-06-30 12:24:35 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2003-06-30 12:24:35 +0000 |
commit | 8bee1ad5a656994c28507e2f56d0bf454d6237a9 (patch) | |
tree | acf7a8437bea823eefbe6d3bc485e3c16e870f6b | |
parent | * src/jlib.hrl: Error stanzas updated to confirm latest xmpp-core (diff) |
* src/mod_muc/mod_muc_room.erl: Fixed room destroying
* src/mod_muc/mod_muc.erl: Likewise
SVN Revision: 118
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/mod_muc/mod_muc.erl | 5 | ||||
-rw-r--r-- | src/mod_muc/mod_muc_room.erl | 22 |
3 files changed, 25 insertions, 7 deletions
@@ -1,3 +1,8 @@ +2003-06-30 Alexey Shchepin <alexey@sevcom.net> + + * src/mod_muc/mod_muc_room.erl: Fixed room destroying + * src/mod_muc/mod_muc.erl: Likewise + 2003-06-29 Alexey Shchepin <alexey@sevcom.net> * src/jlib.hrl: Error stanzas updated to confirm latest xmpp-core diff --git a/src/mod_muc/mod_muc.erl b/src/mod_muc/mod_muc.erl index 42d6c8d1..35564e52 100644 --- a/src/mod_muc/mod_muc.erl +++ b/src/mod_muc/mod_muc.erl @@ -63,7 +63,8 @@ loop(Host) -> end, loop(Host); {room_destroyed, Room} -> - ets:delete(muc_online_room, Room); + ets:delete(muc_online_room, Room), + loop(Host); stop -> % TODO ejabberd_router:unregister_global_route(Host), @@ -169,7 +170,7 @@ do_route(Host, From, To, Packet) -> ok; _ -> Err = jlib:make_error_reply( - Packet, ?ERR_JID_NOT_FOUND), + Packet, ?ERR_ITEM_NOT_FOUND), ejabberd_router:route(To, From, Err) end end; diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl index 37f07afb..a1ec7955 100644 --- a/src/mod_muc/mod_muc_room.erl +++ b/src/mod_muc/mod_muc_room.erl @@ -295,7 +295,12 @@ normal_state({route, From, "", ""}, From, jlib:iq_to_xml(IQRes)), - {next_state, normal_state, NewStateData}; + case NewStateData of + stop -> + {stop, normal, StateData}; + _ -> + {next_state, normal_state, NewStateData} + end; _ -> Err = jlib:make_error_reply( Packet, ?ERR_FEATURE_NOT_IMPLEMENTED), @@ -419,7 +424,14 @@ normal_state({route, From, Nick, end, %io:format("STATE1: ~p~n", [?DICT:to_list(StateData#state.users)]), %io:format("STATE2: ~p~n", [?DICT:to_list(StateData1#state.users)]), - {next_state, normal_state, StateData1}; + + case (not (StateData1#state.config)#config.persistent) andalso + (?DICT:to_list(StateData1#state.users) == []) of + true -> + {stop, normal, StateData1}; + _ -> + {next_state, normal_state, StateData1} + end; normal_state({route, From, ToNick, {xmlelement, "message", Attrs, Els} = Packet}, @@ -447,7 +459,7 @@ normal_state({route, From, ToNick, case find_jid_by_nick(ToNick, StateData) of false -> Err = jlib:make_error_reply( - Packet, ?ERR_JID_NOT_FOUND), + Packet, ?ERR_ITEM_NOT_FOUND), ejabberd_router:route( {StateData#state.room, StateData#state.host, @@ -484,7 +496,7 @@ normal_state({route, From, ToNick, case find_jid_by_nick(ToNick, StateData) of false -> Err = jlib:make_error_reply( - Packet, ?ERR_JID_NOT_FOUND), + Packet, ?ERR_ITEM_NOT_FOUND), ejabberd_router:route( {StateData#state.room, StateData#state.host, ToNick}, From, Err); @@ -1787,7 +1799,7 @@ destroy_room(DEls, StateData) -> Info#user.jid, Packet) end, ?DICT:to_list(StateData#state.users)), - {result, [], StateData}. + {result, [], stop}. |