diff --git a/src/user.cpp b/src/user.cpp index 53056d407a257964b83d6e037789b95244476be9..c66da59591e93995411f4e4a5accc02fcdf819f7 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -206,7 +206,11 @@ void User::handlePresence(Swift::Presence::ref presence) { } LOG4CXX_INFO(logger, m_jid.toString() << ": Going to join room " << presence->getTo().getNode() << " as " << presence->getTo().getResource()); std::string room = Buddy::JIDToLegacyName(presence->getTo()); - onRoomJoined(room, presence->getTo().getResource(), ""); + std::string password = ""; + if (presence->getPayload() != NULL) { + password = presence->getPayload()->getPassword() ? *presence->getPayload()->getPassword() : ""; + } + onRoomJoined(room, presence->getTo().getResource(), password); } return; } @@ -300,7 +304,7 @@ void User::handleDisconnected(const std::string &error) { // We can't be sure finishSession sends unavailable presence everytime, so check if user gets removed // in finishSession(...) call and if not, remove it here. std::string jid = m_jid.toBare().toString(); - dynamic_cast(m_component->getStanzaChannel())->finishSession(m_jid, boost::shared_ptr(new Swift::StreamError(Swift::StreamError::UndefinedCondition, "test"))); + dynamic_cast(m_component->getStanzaChannel())->finishSession(m_jid, boost::shared_ptr(new Swift::StreamError(Swift::StreamError::UndefinedCondition, error))); if (m_userManager->getUser(jid) != NULL) { m_userManager->removeUser(this); }