# HG changeset patch # User Kim Alvefur # Date 1413803714 -7200 # Node ID fb7cd669f41bff833d65fa7e3de77fe8e28263e1 # Parent 16893646a458216dac6c8465e42e01a612d08f80 mod_smacks: Initiate outgoing smacks on s2s when sending request and incoming when the remote says enabled diff -r 16893646a458 -r fb7cd669f41b mod_smacks/mod_smacks.lua --- a/mod_smacks/mod_smacks.lua Mon Oct 20 13:13:48 2014 +0200 +++ b/mod_smacks/mod_smacks.lua Mon Oct 20 13:15:14 2014 +0200 @@ -57,17 +57,6 @@ end end); -module:hook_stanza("http://etherx.jabber.org/streams", "features", - function (session, stanza) - if can_do_smacks(session) then - if stanza:get_child("sm", xmlns_sm3) then - session.sends2s(st.stanza("enable", sm3_attr)); - elseif stanza:get_child("sm", xmlns_sm2) then - session.sends2s(st.stanza("enable", sm2_attr)); - end - end - end); - local function outgoing_stanza_filter(stanza, session) local is_stanza = stanza.attr and not stanza.attr.xmlns; if is_stanza and not stanza._cached then -- Stanza in default stream namespace @@ -165,11 +154,27 @@ module:hook_stanza(xmlns_sm2, "enable", function (session, stanza) return handle_enable(session, stanza, xmlns_sm2); end, 100); module:hook_stanza(xmlns_sm3, "enable", function (session, stanza) return handle_enable(session, stanza, xmlns_sm3); end, 100); +module:hook_stanza("http://etherx.jabber.org/streams", "features", + function (session, stanza) + if can_do_smacks(session) then + if stanza:get_child("sm", xmlns_sm3) then + session.sends2s(st.stanza("enable", sm3_attr)); + session.smacks = xmlns_sm3; + elseif stanza:get_child("sm", xmlns_sm2) then + session.sends2s(st.stanza("enable", sm2_attr)); + session.smacks = xmlns_sm2; + else + return; + end + wrap_session_out(session, false); + end + end); + function handle_enabled(session, stanza, xmlns_sm) module:log("debug", "Enabling stream management"); session.smacks = xmlns_sm; - wrap_session(session, false); + wrap_session_in(session, false); -- FIXME Resume?