aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--src/mod_muc/mod_muc_room.erl15
2 files changed, 21 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index d8c4c251f..af6dfba54 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-02-19 Mickael Remond <mickael.remond@process-one.net>
+
+ * src/mod_muc/mod_muc_room.erl: API improvement: Implementation of an
+ event to destroy MUC room from an external application (Thanks to
+ Massimiliano Mirra) (EJAB-184).
+
2007-02-18 Alexey Shchepin <alexey@sevcom.net>
* src/ejabberd_s2s.erl: Confirm to RFC3920 section 10.3 (thanks to
diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl
index e2f7d190d..5a821f8f1 100644
--- a/src/mod_muc/mod_muc_room.erl
+++ b/src/mod_muc/mod_muc_room.erl
@@ -606,6 +606,21 @@ handle_event({service_message, Msg}, _StateName, StateData) ->
StateData),
{next_state, normal_state, NSD};
+handle_event({destroy, Reason}, _StateName, StateData) ->
+ {result, [], stop} =
+ destroy_room(
+ {xmlelement, "destroy",
+ [{"xmlns", ?NS_MUC_OWNER}],
+ case Reason of
+ none -> [];
+ _Else ->
+ [{xmlelement, "reason",
+ [], [{xmlcdata, Reason}]}]
+ end}, StateData),
+ {stop, stopped_by_event, StateData};
+handle_event(destroy, StateName, StateData) ->
+ handle_event({destroy, none}, StateName, StateData);
+
handle_event(_Event, StateName, StateData) ->
{next_state, StateName, StateData}.