diff options
author | Jonah BrĂ¼chert <jbb@kaidan.im> | 2022-06-26 17:25:22 +0200 |
---|---|---|
committer | badlop <badlop@gmail.com> | 2022-08-12 10:53:53 +0200 |
commit | 648245e974b142e6d9f3c4fd40771c87fadc6c9b (patch) | |
tree | 909b3d703b1c57a59f0b56dd41fe78b09cf59969 /src/mod_mix_pam.erl | |
parent | mod_roster: Change hook type from #roster{} to #roster_item{} (diff) |
mod_mix, mod_mix_pam: Add handling of IQs with newer MIX namespaces
Supported are mix:core:{0,1} and mix:pam:{0,2}
Diffstat (limited to '')
-rw-r--r-- | src/mod_mix_pam.erl | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/mod_mix_pam.erl b/src/mod_mix_pam.erl index ca3b4e6e..08b9125c 100644 --- a/src/mod_mix_pam.erl +++ b/src/mod_mix_pam.erl @@ -70,8 +70,8 @@ start(Host, Opts) -> ejabberd_hooks:add(roster_get, Host, ?MODULE, get_mix_roster_items, 50), ejabberd_hooks:add(webadmin_user, Host, ?MODULE, webadmin_user, 50), ejabberd_hooks:add(webadmin_page_host, Host, ?MODULE, webadmin_page, 50), - gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_0, - ?MODULE, process_iq); + gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_0, ?MODULE, process_iq), + gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_2, ?MODULE, process_iq); Err -> Err end. @@ -83,7 +83,8 @@ stop(Host) -> ejabberd_hooks:delete(roster_get, Host, ?MODULE, get_mix_roster_items, 50), ejabberd_hooks:delete(webadmin_user, Host, ?MODULE, webadmin_user, 50), ejabberd_hooks:delete(webadmin_page_host, Host, ?MODULE, webadmin_page, 50), - gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_0). + gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_0), + gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_2). reload(Host, NewOpts, OldOpts) -> NewMod = gen_mod:db_mod(NewOpts, ?MODULE), @@ -263,7 +264,7 @@ remove_user(LUser, LServer) -> -spec process_join(iq()) -> ignore. process_join(#iq{from = From, sub_els = [#mix_client_join{channel = Channel, - join = Join}]} = IQ) -> + join = Join}]} = IQ) -> ejabberd_router:route_iq( #iq{from = jid:remove_resource(From), to = Channel, type = set, sub_els = [Join]}, @@ -287,7 +288,7 @@ process_leave(#iq{from = From, -spec process_join_result(iq(), iq()) -> ok. process_join_result(#iq{from = #jid{} = Channel, - type = result, sub_els = [#mix_join{id = ID} = Join]}, + type = result, sub_els = [#mix_join{id = ID, xmlns = XmlNs} = Join]}, #iq{to = To} = IQ) -> case add_channel(To, Channel, ID) of ok -> @@ -303,7 +304,7 @@ process_join_result(#iq{from = #jid{} = Channel, % send IQ result ChanID = make_channel_id(Channel, ID), Join1 = Join#mix_join{id = <<"">>, jid = ChanID}, - ResIQ = xmpp:make_iq_result(IQ, #mix_client_join{join = Join1}), + ResIQ = xmpp:make_iq_result(IQ, #mix_client_join{join = Join1, xmlns = XmlNs}), ejabberd_router:route(ResIQ); {error, db_failure} -> ejabberd_router:route_error(IQ, db_error(IQ)) @@ -312,14 +313,14 @@ process_join_result(Err, IQ) -> process_iq_error(Err, IQ). -spec process_leave_result(iq(), iq()) -> ok. -process_leave_result(#iq{from = Channel, type = result, sub_els = [#mix_leave{} = Leave]}, +process_leave_result(#iq{from = Channel, type = result, sub_els = [#mix_leave{xmlns = XmlNs} = Leave]}, #iq{to = User} = IQ) -> % Do roster push mod_roster:push_item(User, #roster_item{jid = Channel, subscription = none}, #roster_item{jid = Channel, subscription = remove}), % send iq result - ResIQ = xmpp:make_iq_result(IQ, #mix_client_leave{leave = Leave}), + ResIQ = xmpp:make_iq_result(IQ, #mix_client_leave{leave = Leave, xmlns = XmlNs}), ejabberd_router:route(ResIQ); process_leave_result(Err, IQ) -> process_iq_error(Err, IQ). |