aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mod_muc_room.erl8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index c83565734..e31ec6b0f 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -3735,7 +3735,8 @@ process_iq_mucsub(From,
NewStateData = set_subscriber(From, Nick, Nodes, StateData),
{result, subscribe_result(Packet), NewStateData};
error ->
- add_new_user(From, Nick, Packet, StateData)
+ Packet2 = copy_password_xelement(Packet),
+ add_new_user(From, Nick, Packet2, StateData)
end;
process_iq_mucsub(From, #iq{type = set, sub_els = [#muc_unsubscribe{}]},
StateData) ->
@@ -3770,6 +3771,11 @@ process_iq_mucsub(_From, #iq{type = get, lang = Lang}, _StateData) ->
Txt = <<"Value 'get' of 'type' attribute is not allowed">>,
{error, xmpp:err_bad_request(Txt, Lang)}.
+copy_password_xelement(Packet) ->
+ SubsEl = fxml:get_subtag_with_xmlns(Packet, <<"subscribe">>, ?NS_MUCSUB),
+ XEl = fxml:get_subtag_with_xmlns(SubsEl, <<"x">>, ?NS_MUC),
+ fxml:append_subtags(Packet, [XEl]).
+
remove_subscriptions(StateData) ->
if not (StateData#state.config)#config.allow_subscription ->
StateData#state{subscribers = ?DICT:new(),