Comparison

core/stanza_router.lua @ 1169:fdc68aec1d49

stanza_router: Improved message routing order
author Waqas Hussain <waqas20@gmail.com>
date Sat, 16 May 2009 02:19:16 +0500
parent 1168:dd523bfc9ea9
child 1172:490ff24d0ac5
comparison
equal deleted inserted replaced
1168:dd523bfc9ea9 1169:fdc68aec1d49
158 if host_session and host_session.type == "local" then 158 if host_session and host_session.type == "local" then
159 -- Local host 159 -- Local host
160 local user = host_session.sessions[node]; 160 local user = host_session.sessions[node];
161 if user then 161 if user then
162 local res = user.sessions[resource]; 162 local res = user.sessions[resource];
163 if not res then 163 if res then -- resource is online...
164 res.send(stanza); -- Yay \o/
165 else
164 -- if we get here, resource was not specified or was unavailable 166 -- if we get here, resource was not specified or was unavailable
165 if stanza.name == "presence" then 167 if stanza.name == "presence" then
166 if stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" and stanza.attr.type ~= "error" then 168 if stanza.attr.type ~= nil and stanza.attr.type ~= "unavailable" and stanza.attr.type ~= "error" then
167 handle_inbound_presence_subscriptions_and_probes(origin, stanza, from_bare, to_bare, core_route_stanza); 169 handle_inbound_presence_subscriptions_and_probes(origin, stanza, from_bare, to_bare, core_route_stanza);
168 elseif not resource then -- sender is available or unavailable or error 170 elseif not resource then -- sender is available or unavailable or error
209 end 211 end
210 end 212 end
211 elseif stanza.attr.type == "get" or stanza.attr.type == "set" then 213 elseif stanza.attr.type == "get" or stanza.attr.type == "set" then
212 origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); 214 origin.send(st.error_reply(stanza, "cancel", "service-unavailable"));
213 end 215 end
214 else
215 -- User + resource is online...
216 stanza.attr.to = res.full_jid; -- reset at the end of function
217 res.send(stanza); -- Yay \o/
218 end 216 end
219 else 217 else
220 -- user not online 218 -- user not online
221 if user_exists(node, host) then 219 if user_exists(node, host) then
222 if stanza.name == "presence" then 220 if stanza.name == "presence" then