diff options
author | Badlop <badlop@process-one.net> | 2016-11-10 20:48:43 +0100 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2016-11-10 20:48:43 +0100 |
commit | 566ac872fe396a6d41296d9cfbc6ed5859a0eeed (patch) | |
tree | 89780ed8eda1b10227aaea749356799c6e73b7fa | |
parent | Support several groups separated by ; in add_rosteritem command (diff) |
Support to provide password when subscribing to a room (#1306)
-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 6010e0bbf..054900399 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -4653,7 +4653,8 @@ process_iq_mucsub(From, Packet, NewStateData = set_subscriber(From, Nick, Nodes, StateData), {result, subscription_nodes_to_events(Nodes), NewStateData}; error -> - add_new_user(From, Nick, Packet, StateData) + Packet2 = copy_password_xelement(Packet), + add_new_user(From, Nick, Packet2, StateData) end; _ -> Err = ?ERRT_NOT_ALLOWED(Lang, <<"Subscriptions are not allowed">>), @@ -4697,6 +4698,11 @@ process_iq_mucsub(_From, _Packet, #iq{lang = Lang}, _StateData) -> Txt = <<"Unrecognized subscription command">>, {error, ?ERRT_BAD_REQUEST(Lang, Txt)}. +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(), |