Changeset - c6224941ceab
[Not reviewed]
0 7 0
HanzZ - 14 years ago 2011-07-17 03:56:19
hanzz.k@gmail.com
Fixed removing users
7 files changed with 24 insertions and 4 deletions:
0 comments (0 inline, 0 general)
include/Swiften/Server/Server.cpp
Show inline comments
 
@@ -28,6 +28,7 @@
 
#include "Swiften/Server/ServerFromClientSession.h"
 
#include "Swiften/Server/ServerStanzaChannel.h"
 
#include "Swiften/Queries/IQRouter.h"
 
#include <iostream>
 

	
 

	
 
namespace Swift {
 
@@ -108,6 +109,9 @@ void Server::handleNewClientConnection(boost::shared_ptr<Connection> connection)
 
	serverFromClientSession->onSessionFinished.connect(
 
			boost::bind(&Server::handleSessionFinished, this, 
 
			serverFromClientSession));
 
	serverFromClientSession->onPasswordInvalid.connect(
 
			boost::bind(&Server::handleSessionFinished, this, 
 
			serverFromClientSession));
 
	serverFromClientSession->onDataRead.connect(boost::bind(&Server::handleDataRead, this, _1));
 
	serverFromClientSession->onDataWritten.connect(boost::bind(&Server::handleDataWritten, this, _1));
 

	
include/Swiften/Server/ServerFromClientSession.cpp
Show inline comments
 
@@ -24,6 +24,7 @@
 
#include <Swiften/StreamStack/TLSServerLayer.h>
 
#include <Swiften/Elements/StartTLSRequest.h>
 
#include <Swiften/Elements/TLSProceed.h>
 
#include <iostream>
 

	
 
namespace Swift {
 

	
 
@@ -65,8 +66,10 @@ void ServerFromClientSession::handlePasswordInvalid(const std::string &user) {
 
	if (user != JID(user_, getLocalJID().getDomain()).toString() || authenticated_)
 
		return;
 
	if (!isInitialized()) {
 
		user_ = "/././";
 
		getXMPPLayer()->writeElement(boost::shared_ptr<AuthFailure>(new AuthFailure));
 
		finishSession(AuthenticationFailedError);
 
		onPasswordInvalid();
 
	}
 
}
 

	
include/Swiften/Server/ServerFromClientSession.h
Show inline comments
 
@@ -42,6 +42,7 @@ namespace Swift {
 
			~ServerFromClientSession();
 

	
 
			boost::signal<void ()> onSessionStarted;
 
			boost::signal<void ()> onPasswordInvalid;
 
			void setAllowSASLEXTERNAL();
 
			const std::string &getUser() {
 
				return user_;
include/Swiften/Server/ServerStanzaChannel.cpp
Show inline comments
 
@@ -55,10 +55,8 @@ void ServerStanzaChannel::sendPresence(boost::shared_ptr<Presence> presence) {
 
void ServerStanzaChannel::finishSession(const JID& to, boost::shared_ptr<Element> element) {
 
	std::vector<boost::shared_ptr<ServerFromClientSession> > candidateSessions;
 
	for (std::list<boost::shared_ptr<ServerFromClientSession> >::const_iterator i = sessions[to.toBare().toString()].begin(); i != sessions[to.toBare().toString()].end(); ++i) {
 
		if ((*i)->getRemoteJID().equals(to, JID::WithoutResource)) {
 
			(*i)->sendElement(element);
 
			candidateSessions.push_back(*i);
 
		}
 
		(*i)->sendElement(element);
 
		candidateSessions.push_back(*i);
 
	}
 

	
 
	for (std::vector<boost::shared_ptr<ServerFromClientSession> >::const_iterator i = candidateSessions.begin(); i != candidateSessions.end(); ++i) {
src/networkpluginserver.cpp
Show inline comments
 
@@ -522,6 +522,7 @@ void NetworkPluginServer::pingTimeout() {
 

	
 
void NetworkPluginServer::handleUserCreated(User *user) {
 
	Backend *c = getFreeClient();
 

	
 
	if (!c) {
 
		LOG4CXX_ERROR(logger, "There is no backend to handle user " << user->getJID().toString());
 
		user->handleDisconnected("Internal Server Error (no free backend to handle your session), please reconnect.");
 
@@ -624,6 +625,7 @@ void NetworkPluginServer::handleRoomLeft(User *user, const std::string &r) {
 
}
 

	
 
void NetworkPluginServer::handleUserDestroyed(User *user) {
 
	std::cout << "HANDLE_DESTROYED\n";
 
	UserInfo userInfo = user->getUserInfo();
 

	
 
	pbnetwork::Logout logout;
src/user.cpp
Show inline comments
 
@@ -42,6 +42,7 @@ static LoggerPtr logger = Logger::getLogger("User");
 

	
 
User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component, UserManager *userManager) {
 
	m_jid = jid;
 
	m_data = NULL;
 

	
 
	m_component = component;
 
	m_presenceOracle = component->m_presenceOracle;
 
@@ -190,6 +191,7 @@ void User::handleDisconnected(const std::string &error) {
 
	// Once in finishSession and once in m_userManager->removeUser.
 
	if (m_component->inServerMode()) {
 
		dynamic_cast<Swift::ServerStanzaChannel *>(m_component->getStanzaChannel())->finishSession(m_jid, boost::shared_ptr<Swift::Element>(new Swift::StreamError()));
 
		m_userManager->removeUser(this);
 
	}
 
	else {
 
		m_userManager->removeUser(this);
src/usermanager.cpp
Show inline comments
 
@@ -167,6 +167,14 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
 
// // // 
 
			addUser(user);
 
	}
 

	
 
	// User can be handleDisconnected in addUser callbacks...
 
	user = getUser(userkey);
 
	if (!user) {
 
		m_userRegistry->onPasswordInvalid(presence->getFrom());
 
		return;
 
	}
 

	
 
	user->handlePresence(presence);
 

	
 
	bool isMUC = presence->getPayload<Swift::MUCPayload>() != NULL || *presence->getTo().getNode().c_str() == '#';
 
@@ -256,9 +264,11 @@ void UserManager::handleSubscription(Swift::Presence::ref presence) {
 

	
 
void UserManager::connectUser(const Swift::JID &user) {
 
	if (m_users.find(user.toBare().toString()) != m_users.end()) {
 
		std::cout << "FOUND\n";
 
		m_userRegistry->onPasswordValid(user);
 
	}
 
	else {
 
		std::cout << "NOT FOUND - PRESENCe\n";
 
		Swift::Presence::ref response = Swift::Presence::create();
 
		response->setTo(m_component->getJID());
 
		response->setFrom(user);
0 comments (0 inline, 0 general)