Changeset - 629e93e34b42
[Not reviewed]
0 3 0
HanzZ - 14 years ago 2011-07-20 03:02:50
hanzz.k@gmail.com
Fixed crash in removig XMPPLayer
3 files changed with 13 insertions and 1 deletions:
0 comments (0 inline, 0 general)
include/transport/usermanager.h
Show inline comments
 
@@ -89,6 +89,7 @@ class UserManager {
 
		void handleGeneralPresenceReceived(Swift::Presence::ref presence);
 
		void handleProbePresence(Swift::Presence::ref presence);
 
		void handleSubscription(Swift::Presence::ref presence);
 
		void handleRemoveTimeout(User *user);
 
// 		void handleDiscoInfoResponse(boost::shared_ptr<Swift::DiscoInfo> info, Swift::ErrorPayload::ref error, const Swift::JID& jid);
 
		void addUser(User *user);
 

	
 
@@ -99,6 +100,7 @@ class UserManager {
 
		StorageBackend *m_storageBackend;
 
		StorageResponder *m_storageResponder;
 
		UserRegistry *m_userRegistry;
 
		Swift::Timer::ref m_removeTimer;
 
		friend class RosterResponder;
 
};
 

	
src/networkpluginserver.cpp
Show inline comments
 
@@ -227,6 +227,9 @@ void NetworkPluginServer::handleSessionFinished(Backend *c) {
 
		(*it)->handleDisconnected("Internal Server Error, please reconnect.");
 
	}
 

	
 
// 	c->connection->onDisconnected.connect(boost::bind(&NetworkPluginServer::handleSessionFinished, this, c));
 
// 	c->connection->onDataRead.connect(boost::bind(&NetworkPluginServer::handleDataRead, this, c, _1));
 

	
 
	m_clients.remove(c);
 
	delete c;
 

	
src/usermanager.cpp
Show inline comments
 
@@ -53,6 +53,8 @@ UserManager::UserManager(Component *component, UserRegistry *userRegistry, Stora
 

	
 
	m_userRegistry->onConnectUser.connect(bind(&UserManager::connectUser, this, _1));
 
// 	component->onDiscoInfoResponse.connect(bind(&UserManager::handleDiscoInfoResponse, this, _1, _2, _3));
 

	
 
	m_removeTimer = m_component->getNetworkFactories()->getTimerFactory()->createTimer(1);
 
}
 

	
 
UserManager::~UserManager(){
 
@@ -186,7 +188,8 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
 
			Swift::Presence::ref highest = m_component->getPresenceOracle()->getHighestPriorityPresence(presence->getFrom().toBare());
 
			// There's no presence for this user, so disconnect
 
			if (!highest || (highest && highest->getType() == Swift::Presence::Unavailable)) {
 
				removeUser(user);
 
				m_removeTimer->onTick.connect(boost::bind(&UserManager::handleRemoveTimeout, this, user)); 
 
				m_removeTimer->start();
 
			}
 
		}
 
		// TODO: HANDLE MUC SOMEHOW
 
@@ -196,6 +199,10 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
 
	}
 
}
 

	
 
void UserManager::handleRemoveTimeout(User *user) {
 
	removeUser(user);
 
}
 

	
 
void UserManager::handleMessageReceived(Swift::Message::ref message) {
 
	User *user = getUser(message->getFrom().toBare().toString());
 
	if (!user ){
0 comments (0 inline, 0 general)