215 end |
215 end |
216 |
216 |
217 if stanza.attr.type == "probe" then |
217 if stanza.attr.type == "probe" then |
218 if rostermanager.is_contact_subscribed(node, host, from_bare) then |
218 if rostermanager.is_contact_subscribed(node, host, from_bare) then |
219 if 0 == send_presence_of_available_resources(node, host, st_from, origin, core_route_stanza) then |
219 if 0 == send_presence_of_available_resources(node, host, st_from, origin, core_route_stanza) then |
220 -- TODO send last recieved unavailable presence (or we MAY do nothing, which is fine too) |
220 core_route_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"})); -- TODO send last activity |
221 end |
221 end |
222 else |
222 else |
223 core_route_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unsubscribed"})); |
223 core_route_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unsubscribed"})); |
224 end |
224 end |
225 elseif stanza.attr.type == "subscribe" then |
225 elseif stanza.attr.type == "subscribe" then |
226 if rostermanager.is_contact_subscribed(node, host, from_bare) then |
226 if rostermanager.is_contact_subscribed(node, host, from_bare) then |
227 core_route_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="subscribed"})); -- already subscribed |
227 core_route_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="subscribed"})); -- already subscribed |
228 -- Sending presence is not clearly stated in the RFC, but it seems appropriate |
228 -- Sending presence is not clearly stated in the RFC, but it seems appropriate |
229 if 0 == send_presence_of_available_resources(node, host, from_bare, origin, core_route_stanza) then |
229 if 0 == send_presence_of_available_resources(node, host, from_bare, origin, core_route_stanza) then |
230 -- TODO send last recieved unavailable presence (or we MAY do nothing, which is fine too) |
230 core_route_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"})); -- TODO send last activity |
231 end |
231 end |
232 else |
232 else |
233 core_route_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"})); -- acknowledging receipt |
233 core_route_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"})); -- acknowledging receipt |
234 if not rostermanager.is_contact_pending_in(node, host, from_bare) then |
234 if not rostermanager.is_contact_pending_in(node, host, from_bare) then |
235 if rostermanager.set_contact_pending_in(node, host, from_bare) then |
235 if rostermanager.set_contact_pending_in(node, host, from_bare) then |