Software /
code /
prosody
Changeset
968:13e3bdfb02f9
Automated merge with http://waqas.ath.cx:8000/
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 08 Apr 2009 20:19:55 +0100 |
parents | 967:b021403c5d80 (diff) 965:8bc06338aac3 (current diff) |
children | 969:9ab6934fb1ff |
files | |
diffstat | 2 files changed, 9 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/core/presencemanager.lua Wed Apr 08 20:19:09 2009 +0100 +++ b/core/presencemanager.lua Wed Apr 08 20:19:55 2009 +0100 @@ -28,7 +28,7 @@ function handle_presence(origin, stanza, from_bare, to_bare, core_route_stanza, inbound) local type = stanza.attr.type; - if type and type ~= "unavailable" then + if type and type ~= "unavailable" and type ~= "error" then if inbound then handle_inbound_presence_subscriptions_and_probes(origin, stanza, from_bare, to_bare, core_route_stanza); else
--- a/core/stanza_router.lua Wed Apr 08 20:19:09 2009 +0100 +++ b/core/stanza_router.lua Wed Apr 08 20:19:55 2009 +0100 @@ -124,7 +124,7 @@ component_handle_stanza(origin, stanza); elseif hosts[host] and hosts[host].type == "component" then -- directed at a component component_handle_stanza(origin, stanza); - elseif origin.type == "c2s" and stanza.name == "presence" and stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" then + elseif origin.type == "c2s" and stanza.name == "presence" and stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" and stanza.attr.type ~= "error" then handle_outbound_presence_subscriptions_and_probes(origin, stanza, from_bare, to_bare, core_route_stanza); elseif hosts[host] and hosts[host].type == "local" and stanza.name == "iq" and not resource then -- directed at bare JID core_handle_stanza(origin, stanza); @@ -144,7 +144,7 @@ if origin.type == "c2s" or origin.type == "s2sin" then if origin.type == "c2s" then if stanza.name == "presence" and origin.roster then - if stanza.attr.type == nil or stanza.attr.type == "unavailable" then + if stanza.attr.type == nil or stanza.attr.type == "unavailable" and stanza.attr.type ~= "error" then handle_normal_presence(origin, stanza, core_route_stanza); else log("warn", "Unhandled c2s presence: %s", tostring(stanza)); @@ -188,7 +188,7 @@ return component_handle_stanza(origin, stanza); end - if stanza.name == "presence" and (stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable") then resource = nil; end + if stanza.name == "presence" and (stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" and stanza.attr.type ~= "error") then resource = nil; end local host_session = hosts[host] if host_session and host_session.type == "local" then @@ -199,9 +199,9 @@ if not res then -- if we get here, resource was not specified or was unavailable if stanza.name == "presence" then - if stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" then + if stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" and stanza.attr.type ~= "error" then handle_inbound_presence_subscriptions_and_probes(origin, stanza, from_bare, to_bare, core_route_stanza); - else -- sender is available or unavailable + elseif not resource then -- sender is available or unavailable or error for _, session in pairs(user.sessions) do -- presence broadcast to all user resources. if session.full_jid then -- FIXME should this be just for available resources? Do we need to check subscription? stanza.attr.to = session.full_jid; -- reset at the end of function @@ -244,8 +244,8 @@ -- TODO deal with storage errors end end - else - -- TODO send IQ error + elseif stanza.attr.type == "get" or stanza.attr.type == "set" then + origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); end else -- User + resource is online... @@ -256,7 +256,7 @@ -- user not online if user_exists(node, host) then if stanza.name == "presence" then - if stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" then + if stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" and stanza.attr.type ~= "error" then handle_inbound_presence_subscriptions_and_probes(origin, stanza, from_bare, to_bare, core_route_stanza); else -- TODO send unavailable presence or unsubscribed