diff -r 6d619c43e613 -r 27978a3f2c0c core/presencemanager.lua --- a/core/presencemanager.lua Thu Feb 19 15:18:44 2009 +0000 +++ b/core/presencemanager.lua Thu Feb 19 19:00:18 2009 +0000 @@ -95,13 +95,16 @@ end origin.priority = 0; if stanza.attr.type == "unavailable" then - origin.presence = nil; - if origin.directed then - for jid in pairs(origin.directed) do - stanza.attr.to = jid; - core_route_stanza(origin, stanza); - end - origin.directed = nil; + origin.presence = nil; + if origin.directed then + local old_from = stanza.attr.from; + stanza.attr.from = origin.full_jid; + for jid in pairs(origin.directed) do + stanza.attr.to = jid; + core_route_stanza(origin, stanza); + end + stanza.attr.from = old_from; + origin.directed = nil; end else origin.presence = stanza;