plugins/mod_presence.lua
changeset 9675 e50559a42dfe
parent 8731 41c959c5c84b
child 9680 837ba29aaeff
equal deleted inserted replaced
9674:73e1bdc001ce 9675:e50559a42dfe
    78 				res.presence.attr.to = origin.full_jid;
    78 				res.presence.attr.to = origin.full_jid;
    79 				core_post_stanza(res, res.presence, true);
    79 				core_post_stanza(res, res.presence, true);
    80 				res.presence.attr.to = nil;
    80 				res.presence.attr.to = nil;
    81 			end
    81 			end
    82 		end
    82 		end
    83 		for jid in pairs(roster[false].pending) do -- resend incoming subscription requests
    83 		for jid, pending_request in pairs(roster[false].pending) do -- resend incoming subscription requests
    84 			origin.send(st.presence({type="subscribe", from=jid})); -- TODO add to attribute? Use original?
    84 			local subscribe = st.clone(st.deserialize(pending_request));
       
    85 			subscribe.attr.type, subscribe.attr.from = "subscribe", jid;
       
    86 			origin.send(subscribe);
    85 		end
    87 		end
    86 		local request = st.presence({type="subscribe", from=origin.username.."@"..origin.host});
    88 		local request = st.presence({type="subscribe", from=origin.username.."@"..origin.host});
    87 		for jid, item in pairs(roster) do -- resend outgoing subscription requests
    89 		for jid, item in pairs(roster) do -- resend outgoing subscription requests
    88 			if item.ask then
    90 			if item.ask then
    89 				request.attr.to = jid;
    91 				request.attr.to = jid;
   223 				core_post_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"}), true); -- TODO send last activity
   225 				core_post_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"}), true); -- TODO send last activity
   224 			end
   226 			end
   225 		else
   227 		else
   226 			core_post_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"}), true); -- acknowledging receipt
   228 			core_post_stanza(hosts[host], st.presence({from=to_bare, to=from_bare, type="unavailable"}), true); -- acknowledging receipt
   227 			if not rostermanager.is_contact_pending_in(node, host, from_bare) then
   229 			if not rostermanager.is_contact_pending_in(node, host, from_bare) then
   228 				if rostermanager.set_contact_pending_in(node, host, from_bare) then
   230 				if rostermanager.set_contact_pending_in(node, host, from_bare, stanza) then
   229 					sessionmanager.send_to_available_resources(node, host, stanza);
   231 					sessionmanager.send_to_available_resources(node, host, stanza);
   230 				end -- TODO else return error, unable to save
   232 				end -- TODO else return error, unable to save
   231 			end
   233 			end
   232 		end
   234 		end
   233 	elseif stanza.attr.type == "unsubscribe" then
   235 	elseif stanza.attr.type == "unsubscribe" then