diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-11-12 14:41:37 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-11-12 14:41:37 +0300 |
commit | 5d552c8463fb1ba71e20ca75613f27732c7234c0 (patch) | |
tree | cd27692be38d5a9619fb0a6d63926830d69e4d24 /src | |
parent | Merge branch 'master' into xml-ng (diff) | |
parent | Support to provide password when subscribing to a room (#1306) (diff) |
Merge branch 'master' into xml-ng
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_muc_room.erl | 8 |
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(), |