diff options
author | Kim Alvefur <zash@zash.se> | 2019-06-10 13:22:22 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2019-06-10 13:22:22 +0200 |
commit | 5eba0ea836d508aeb3087a7d93f6e90cc1f92de8 (patch) | |
tree | 8cd84a76fb673cbfefa00ba1516bd16150f1c780 /plugins/mod_presence.lua | |
parent | 1cc4ec5d808a55d32e3d51f30d8b50fe45268438 (diff) | |
parent | 2bb05d010d9b237a088bd9b4c997451407191d3f (diff) | |
download | prosody-5eba0ea836d508aeb3087a7d93f6e90cc1f92de8.tar.gz prosody-5eba0ea836d508aeb3087a7d93f6e90cc1f92de8.zip |
Merge 0.11->trunk
Diffstat (limited to 'plugins/mod_presence.lua')
-rw-r--r-- | plugins/mod_presence.lua | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/plugins/mod_presence.lua b/plugins/mod_presence.lua index 268a2f0c..f7f458ca 100644 --- a/plugins/mod_presence.lua +++ b/plugins/mod_presence.lua @@ -81,8 +81,14 @@ function handle_normal_presence(origin, stanza) res.presence.attr.to = nil; end end - for jid in pairs(roster[false].pending) do -- resend incoming subscription requests - origin.send(st.presence({type="subscribe", from=jid})); -- TODO add to attribute? Use original? + for jid, pending_request in pairs(roster[false].pending) do -- resend incoming subscription requests + if type(pending_request) == "table" then + local subscribe = st.deserialize(pending_request); + subscribe.attr.type, subscribe.attr.from = "subscribe", jid; + origin.send(subscribe); + else + origin.send(st.presence({type="subscribe", from=jid})); + end end local request = st.presence({type="subscribe", from=origin.username.."@"..origin.host}); for jid, item in pairs(roster) do -- resend outgoing subscription requests @@ -226,7 +232,7 @@ function handle_inbound_presence_subscriptions_and_probes(origin, stanza, from_b else core_post_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"}), true); -- acknowledging receipt if not rostermanager.is_contact_pending_in(node, host, from_bare) then - if rostermanager.set_contact_pending_in(node, host, from_bare) then + if rostermanager.set_contact_pending_in(node, host, from_bare, stanza) then sessionmanager.send_to_available_resources(node, host, stanza); end -- TODO else return error, unable to save end |