Software /
code /
prosody
Changeset
2038:4ab83f96585a
mod_presence: Send unavailable presence when sending unsubscribed presence stanzas (some legacy clients continue to display unsubscribed contacts as available).
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Wed, 21 Oct 2009 19:01:02 +0500 |
parents | 2037:a919511c45ac |
children | 2039:545c0d6b6bb3 |
files | plugins/mod_presence.lua |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_presence.lua Wed Oct 21 14:05:33 2009 +0100 +++ b/plugins/mod_presence.lua Wed Oct 21 19:01:02 2009 +0500 @@ -142,7 +142,7 @@ stanza.attr.to = nil; -- reset it end -function send_presence_of_available_resources(user, host, jid, recipient_session, core_route_stanza) +function send_presence_of_available_resources(user, host, jid, recipient_session, core_route_stanza, stanza) local h = hosts[host]; local count = 0; if h and h.type == "local" then @@ -151,6 +151,7 @@ for k, session in pairs(u.sessions) do local pres = session.presence; if pres then + if stanza then pres = stanza; pres.attr.from = session.full_jid; end pres.attr.to = jid; core_route_stanza(session, pres); pres.attr.to = nil; @@ -199,6 +200,9 @@ rostermanager.roster_push(node, host, to_bare); end core_route_stanza(origin, stanza); + -- COMPAT: Some legacy clients keep displaying unsubscribed contacts as online unless an unavailable presence is sent: + send_presence_of_available_resources(node, host, to_bare, origin, core_route_stanza, + st.presence({ type="unavailable", from=from_bare, to=to_bare, id=stanza.attr.id })); end stanza.attr.from, stanza.attr.to = st_from, st_to; end