Fixed RIE for components

This commit is contained in:
Jan Kaluza 2011-12-08 12:14:13 +01:00
parent 93418187e2
commit ee0b8ee838

View file

@ -116,9 +116,18 @@ void RosterManager::sendBuddyRosterPush(Buddy *buddy) {
payload->addItem(item);
std::vector<Swift::Presence::ref> presences = m_component->getPresenceOracle()->getAllPresence(m_user->getJID().toBare());
BOOST_FOREACH(Swift::Presence::ref presence, presences) {
Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(payload, presence->getFrom(), m_component->getIQRouter());
// In server mode we have to send pushes to all resources, but in gateway-mode we send it only to bare JID
if (m_component->inServerMode()) {
std::vector<Swift::Presence::ref> presences = m_component->getPresenceOracle()->getAllPresence(m_user->getJID().toBare());
BOOST_FOREACH(Swift::Presence::ref presence, presences) {
Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(payload, presence->getFrom(), m_component->getIQRouter());
request->onResponse.connect(boost::bind(&RosterManager::handleBuddyRosterPushResponse, this, _1, request, buddy->getName()));
request->send();
m_requests.push_back(request);
}
}
else {
Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(payload, m_user->getJID().toBare(), m_component->getIQRouter());
request->onResponse.connect(boost::bind(&RosterManager::handleBuddyRosterPushResponse, this, _1, request, buddy->getName()));
request->send();
m_requests.push_back(request);
@ -332,8 +341,8 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
else {
Swift::Presence::ref response = Swift::Presence::create();
Swift::Presence::ref currentPresence;
response->setTo(presence->getFrom());
response->setFrom(presence->getTo());
response->setTo(presence->getFrom().toBare());
response->setFrom(presence->getTo().toBare().toString() + "/bot");
Buddy *buddy = getBuddy(Buddy::JIDToLegacyName(presence->getTo()));
if (buddy) {
@ -355,7 +364,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
break;
// just send response
case Swift::Presence::Unsubscribed:
// response->setType(Swift::Presence::Unsubscribe);
response->setType(Swift::Presence::Unsubscribe);
break;
default:
return;