Changeset - 13878f6a9dd2
[Not reviewed]
0 3 0
Jan Kaluza - 10 years ago 2015-12-15 07:31:13
jkaluza@redhat.com
Fix crashes on exit
3 files changed with 15 insertions and 2 deletions:
0 comments (0 inline, 0 general)
spectrum/src/frontends/xmpp/XMPPUserManager.cpp
Show inline comments
 
@@ -47,24 +47,27 @@
 
namespace Transport {
 

	
 
DEFINE_LOGGER(logger, "XMPPUserManager");
 

	
 
XMPPUserManager::XMPPUserManager(Component *component, UserRegistry *userRegistry, StorageBackend *storageBackend) : UserManager(component, userRegistry, storageBackend) {
 
	m_component = component;
 

	
 
	XMPPFrontend *frontend = static_cast<XMPPFrontend *>(component->getFrontend());
 
	if (storageBackend) {
 
		m_storageResponder = new StorageResponder(frontend->getIQRouter(), storageBackend, this);
 
		m_storageResponder->start();
 
	}
 
	else {
 
		m_storageResponder = NULL;
 
	}
 

	
 
	m_vcardResponder = new VCardResponder(frontend->getIQRouter(), component->getNetworkFactories(), this);
 
	m_vcardResponder->onVCardRequired.connect(boost::bind(&XMPPUserManager::handleVCardRequired, this, _1, _2, _3));
 
	m_vcardResponder->onVCardUpdated.connect(boost::bind(&XMPPUserManager::handleVCardUpdated, this, _1, _2));
 
	m_vcardResponder->start();
 

	
 
	if (storageBackend) {
 
		m_userRegistration = new XMPPUserRegistration(component, this, storageBackend);
 
		m_userRegistration->start();
 
	}
 
	else {
 
		m_userRegistration = NULL;
 
@@ -88,28 +91,34 @@ XMPPUserManager::XMPPUserManager(Component *component, UserRegistry *userRegistr
 

	
 
XMPPUserManager::~XMPPUserManager() {
 
	if (m_storageResponder) {
 
		m_storageResponder->stop();
 
		delete m_storageResponder;
 
	}
 

	
 
	if (m_userRegistration) {
 
		m_userRegistration->stop();
 
		delete m_userRegistration;
 
	}
 

	
 
	m_gatewayResponder->stop();
 
	delete m_gatewayResponder;
 

	
 
	m_adHocManager->stop();
 
	delete m_adHocManager;
 
	delete m_settings;
 

	
 
	m_vcardResponder->stop();
 
	delete m_vcardResponder;
 

	
 
	m_rosterResponder->stop();
 
	delete m_rosterResponder;
 
}
 

	
 
void XMPPUserManager::sendVCard(unsigned int id, Swift::VCard::ref vcard) {
 
	m_vcardResponder->sendVCard(id, vcard);
 
}
 

	
 
void XMPPUserManager::handleVCardRequired(User *user, const std::string &name, unsigned int id) {
 
	m_component->getFrontend()->onVCardRequired(user, name, id);
 
}
 

	
 
void XMPPUserManager::handleVCardUpdated(User *user, boost::shared_ptr<Swift::VCard> vcard) {
src/NetworkPluginServer.cpp
Show inline comments
 
@@ -301,24 +301,28 @@ NetworkPluginServer::NetworkPluginServer(Component *component, Config *config, U
 
	m_component->getFrontend()->onBuddyRemoved.connect(boost::bind(&NetworkPluginServer::handleBuddyRemoved, this, _1));
 
	m_component->getFrontend()->onBuddyUpdated.connect(boost::bind(&NetworkPluginServer::handleBuddyUpdated, this, _1, _2));
 

	
 
// // 	m_blockResponder = new BlockResponder(component->getIQRouter(), userManager);
 
// // 	m_blockResponder->onBlockToggled.connect(boost::bind(&NetworkPluginServer::handleBlockToggled, this, _1));
 
// // 	m_blockResponder->start();
 

	
 
	m_server = component->getNetworkFactories()->getConnectionServerFactory()->createConnectionServer(Swift::HostAddress(CONFIG_STRING(m_config, "service.backend_host")), boost::lexical_cast<int>(CONFIG_STRING(m_config, "service.backend_port")));
 
	m_server->onNewConnection.connect(boost::bind(&NetworkPluginServer::handleNewClientConnection, this, _1));
 
}
 

	
 
NetworkPluginServer::~NetworkPluginServer() {
 
#ifndef _WIN32
 
	signal(SIGCHLD, SIG_IGN);
 
#endif
 

	
 
	for (std::list<Backend *>::const_iterator it = m_clients.begin(); it != m_clients.end(); it++) {
 
		LOG4CXX_INFO(logger, "Stopping backend " << *it);
 
		std::string message;
 
		pbnetwork::WrapperMessage wrap;
 
		wrap.set_type(pbnetwork::WrapperMessage_Type_TYPE_EXIT);
 
		wrap.SerializeToString(&message);
 

	
 
		Backend *c = (Backend *) *it;
 
		send(c->connection, message);
 
	}
 

	
 
	m_pingTimer->stop();
src/UserManager.cpp
Show inline comments
 
@@ -56,25 +56,25 @@ UserManager::UserManager(Component *component, UserRegistry *userRegistry, Stora
 

	
 
	component->onUserPresenceReceived.connect(bind(&UserManager::handlePresence, this, _1));
 
	component->getFrontend()->onCapabilitiesReceived.connect(bind(&UserManager::handleDiscoInfo, this, _1, _2));
 
	m_component->getFrontend()->onMessageReceived.connect(bind(&UserManager::handleMessageReceived, this, _1));
 
	m_component->getFrontend()->onPresenceReceived.connect(bind(&UserManager::handleGeneralPresenceReceived, this, _1));
 

	
 
	m_userRegistry->onConnectUser.connect(bind(&UserManager::connectUser, this, _1));
 
	m_userRegistry->onDisconnectUser.connect(bind(&UserManager::disconnectUser, this, _1));
 

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

	
 
UserManager::~UserManager(){
 
UserManager::~UserManager() {
 

	
 
}
 

	
 
void UserManager::addUser(User *user) {
 
	m_users[user->getJID().toBare().toString()] = user;
 
	if (m_storageBackend) {
 
		m_storageBackend->setUserOnline(user->getUserInfo().id, true);
 
	}
 
	onUserCreated(user);
 
}
 

	
 
User *UserManager::getUser(const std::string &barejid){
0 comments (0 inline, 0 general)