diff --git a/src/user.cpp b/src/user.cpp index 30d58ae7..33feb3ac 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -111,8 +111,12 @@ void User::handleDisconnected(const std::string &error) { boost::shared_ptr msg(new Swift::Message()); msg->setBody(error); msg->setTo(m_jid.toBare()); + msg->setFrom(m_component->getJID()); m_component->getStanzaChannel()->sendMessage(msg); - dynamic_cast(m_component->getStanzaChannel())->finishSession(m_jid, boost::shared_ptr(new Swift::StreamError())); + + if (m_component->inServerMode()) { + dynamic_cast(m_component->getStanzaChannel())->finishSession(m_jid, boost::shared_ptr(new Swift::StreamError())); + } m_userManager->removeUser(this); }