aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-11-12 14:41:37 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-11-12 14:41:37 +0300
commit5d552c8463fb1ba71e20ca75613f27732c7234c0 (patch)
treecd27692be38d5a9619fb0a6d63926830d69e4d24 /src
parentMerge branch 'master' into xml-ng (diff)
parentSupport 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.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(),