diff --git a/include/Swiften/Server/ServerFromClientSession.cpp b/include/Swiften/Server/ServerFromClientSession.cpp index 2ab70237fe02a10b5d72edd598b80ee3dee28917..4a2bb751c748e1e074945c89b0c7d4d1b4bc54fa 100644 --- a/include/Swiften/Server/ServerFromClientSession.cpp +++ b/include/Swiften/Server/ServerFromClientSession.cpp @@ -9,6 +9,8 @@ #include #include +#include +#include #include #include #include @@ -34,7 +36,8 @@ ServerFromClientSession::ServerFromClientSession( PayloadParserFactoryCollection* payloadParserFactories, PayloadSerializerCollection* payloadSerializers, UserRegistry* userRegistry, - XMLParserFactory* factory) : + XMLParserFactory* factory, + Swift::JID remoteJID) : Session(connection, payloadParserFactories, payloadSerializers, factory), id_(id), userRegistry_(userRegistry), @@ -43,6 +46,7 @@ ServerFromClientSession::ServerFromClientSession( allowSASLEXTERNAL(false), tlsLayer(0), tlsConnected(false) { + setRemoteJID(remoteJID); } ServerFromClientSession::~ServerFromClientSession() { @@ -59,9 +63,14 @@ void ServerFromClientSession::handlePasswordValid() { } } -void ServerFromClientSession::handlePasswordInvalid() { +void ServerFromClientSession::handlePasswordInvalid(const std::string &error) { if (!isInitialized()) { getXMPPLayer()->writeElement(boost::shared_ptr(new AuthFailure)); + if (!error.empty()) { + boost::shared_ptr msg(new StreamError(StreamError::UndefinedCondition, error)); + getXMPPLayer()->writeElement(msg); + } + finishSession(AuthenticationFailedError); } }