From 648245e974b142e6d9f3c4fd40771c87fadc6c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonah=20Br=C3=BCchert?= Date: Sun, 26 Jun 2022 17:25:22 +0200 Subject: mod_mix, mod_mix_pam: Add handling of IQs with newer MIX namespaces Supported are mix:core:{0,1} and mix:pam:{0,2} --- src/mod_mix_pam.erl | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/mod_mix_pam.erl') 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). -- cgit v1.2.3