Changeset - ab6a0ecf307b
[Not reviewed]
0 3 0
HanzZ - 14 years ago 2011-09-18 16:59:05
hanzz.k@gmail.com
Better unregistering in gateway mode + other gateway mode fixes
3 files changed with 24 insertions and 16 deletions:
0 comments (0 inline, 0 general)
src/buddy.cpp
Show inline comments
 
@@ -58,7 +58,7 @@ BuddyFlag Buddy::getFlags() {
 
}
 

	
 
const Swift::JID &Buddy::getJID() {
 
	if (!m_jid.isValid()) {
 
	if (!m_jid.isValid() || m_jid.getNode().empty()) {
 
		generateJID();
 
	}
 
	return m_jid;
 
@@ -81,6 +81,10 @@ Swift::Presence::ref Buddy::generatePresenceStanza(int features, bool only_new)
 
	if (!getStatus(s, statusMessage))
 
		return Swift::Presence::ref();
 

	
 
	if (m_jid.getNode().empty()) {
 
		generateJID();
 
	}
 

	
 
	Swift::Presence::ref presence = Swift::Presence::create();
 
 	presence->setFrom(m_jid);
 
	presence->setTo(m_rosterManager->getUser()->getJID().toBare());
 
@@ -163,9 +167,9 @@ std::string Buddy::JIDToLegacyName(const Swift::JID &jid) {
 
	else {
 
		name = jid.getUnescapedNode();
 
		// Psi sucks...
 
		if (name.find_last_of("\\40") != std::string::npos) {
 
			name.replace(name.find_last_of("\\40"), 1, "@"); // OK
 
		}
 
// 		if (name.find_last_of("\\40") != std::string::npos) {
 
// 			name.replace(name.find_last_of("\\40"), 1, "@"); // OK
 
// 		}
 
	}
 
	return name;
 
}
src/rostermanager.cpp
Show inline comments
 
@@ -199,12 +199,14 @@ void RosterManager::handleRemoteRosterResponse(boost::shared_ptr<Swift::RosterPa
 

	
 
	LOG4CXX_INFO(logger, m_user->getJID().toString() << ": This server supports remote roster protoXEP");
 
	m_supportRemoteRoster = true;
 
	return;
 

	
 
	BOOST_FOREACH(const Swift::RosterItemPayload &item, payload->getItems()) {
 
		std::string legacyName = Buddy::JIDToLegacyName(item.getJID());
 
		if (m_buddies.find(legacyName) != m_buddies.end()) {
 
			continue;
 
		}
 
		std::cout << "LEGACYNAME " << legacyName << "\n";
 

	
 
		BuddyInfo buddyInfo;
 
		buddyInfo.id = -1;
src/userregistration.cpp
Show inline comments
 
@@ -88,34 +88,36 @@ void UserRegistration::handleUnregisterRemoteRosterResponse(boost::shared_ptr<Sw
 
	if (!registered)
 
		return;
 

	
 
	std::list <BuddyInfo> roster;
 
	m_storageBackend->getBuddies(userInfo.id, roster);
 
	for(std::list<BuddyInfo>::iterator u = roster.begin(); u != roster.end() ; u++){
 
		std::string name = (*u).legacyName;
 
	if (remoteRosterNotSupported) {
 
		std::list <BuddyInfo> roster;
 
		m_storageBackend->getBuddies(userInfo.id, roster);
 
		for(std::list<BuddyInfo>::iterator u = roster.begin(); u != roster.end() ; u++){
 
			std::string name = Swift::JID::getEscapedNode((*u).legacyName);
 

	
 
		if (remoteRosterNotSupported) {
 
			Swift::Presence::ref response;
 
			response = Swift::Presence::create();
 
			response->setTo(Swift::JID(barejid));
 
			response->setFrom(Swift::JID(name + "@" + m_component->getJID().toString()));
 
			response->setFrom(Swift::JID(name, m_component->getJID().toString()));
 
			response->setType(Swift::Presence::Unsubscribe);
 
			m_component->getStanzaChannel()->sendPresence(response);
 

	
 
			response = Swift::Presence::create();
 
			response->setTo(Swift::JID(barejid));
 
			response->setFrom(Swift::JID(name + "@" + m_component->getJID().toString()));
 
			response->setFrom(Swift::JID(name, m_component->getJID().toString()));
 
			response->setType(Swift::Presence::Unsubscribed);
 
			m_component->getStanzaChannel()->sendPresence(response);
 
		}
 
		else {
 
			Swift::RosterPayload::ref payload = Swift::RosterPayload::ref(new Swift::RosterPayload());
 
	}
 
	else {
 
		BOOST_FOREACH(Swift::RosterItemPayload it, payload->getItems()) {
 
			Swift::RosterPayload::ref p = Swift::RosterPayload::ref(new Swift::RosterPayload());
 
			Swift::RosterItemPayload item;
 
			item.setJID(Swift::JID(name + "@" + m_component->getJID().toString()));
 
			item.setJID(it.getJID());
 
			item.setSubscription(Swift::RosterItemPayload::Remove);
 

	
 
			payload->addItem(item);
 
			p->addItem(item);
 

	
 
			Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(payload, barejid, m_component->getIQRouter());
 
			Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(p, barejid, m_component->getIQRouter());
 
			request->send();
 
		}
 
	}
0 comments (0 inline, 0 general)