From 61e7cfaa7f985961fc7c3a9b558c7df3e3c8ee4b Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Sun, 28 Feb 2016 14:43:59 +0100 Subject: [PATCH] Libcommuni treat ERR_NICKNAME colision the same way as ERR_NICKNAMEINUSE --- backends/libcommuni/session.cpp | 22 +++++++++++++--------- libtransport/Conversation.cpp | 4 ++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/backends/libcommuni/session.cpp b/backends/libcommuni/session.cpp index 39ecc35c..877a90e2 100644 --- a/backends/libcommuni/session.cpp +++ b/backends/libcommuni/session.cpp @@ -216,6 +216,7 @@ void MyIrcSession::on_socketError(QAbstractSocket::SocketError error) { m_np->handleDisconnected(m_user, 0, reason); m_np->tryNextServer(); } + LOG4CXX_INFO(logger, m_user << ": Disconnected from IRC network: " << reason); m_connected = false; } @@ -460,6 +461,7 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { m_np->handleDisconnected(m_user, pbnetwork::CONNECTION_ERROR_INVALID_USERNAME, "Erroneous Nickname"); break; case Irc::ERR_NICKNAMEINUSE: + case Irc::ERR_NICKCOLLISION: foreach (IrcBuffer *buffer, m_bufferModel->buffers()) { if (!buffer->isChannel()) { continue; @@ -476,15 +478,14 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { // m_np->handleDisconnected(m_user, pbnetwork::CONNECTION_ERROR_INVALID_USERNAME, "Nickname is already in use"); // } break; - case Irc::ERR_NICKCOLLISION: - foreach (IrcBuffer *buffer, m_bufferModel->buffers()) { - if (!buffer->isChannel()) { - continue; - } - m_np->handleParticipantChanged(m_user, TO_UTF8(nickName()), TO_UTF8(buffer->title()) + m_suffix, pbnetwork::PARTICIPANT_FLAG_CONFLICT); - } - m_np->handleDisconnected(m_user, pbnetwork::CONNECTION_ERROR_INVALID_USERNAME, "Nickname collision KILL"); - break; +// foreach (IrcBuffer *buffer, m_bufferModel->buffers()) { +// if (!buffer->isChannel()) { +// continue; +// } +// m_np->handleParticipantChanged(m_user, TO_UTF8(nickName()), TO_UTF8(buffer->title()) + m_suffix, pbnetwork::PARTICIPANT_FLAG_CONFLICT); +// } +// m_np->handleDisconnected(m_user, pbnetwork::CONNECTION_ERROR_INVALID_USERNAME, "Nickname collision KILL"); +// break; case Irc::ERR_PASSWDMISMATCH: foreach (IrcBuffer *buffer, m_bufferModel->buffers()) { if (!buffer->isChannel()) { @@ -513,6 +514,9 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { if (m->code() >= 400 && m->code() < 500) { LOG4CXX_INFO(logger, m_user << ": Error message received: " << message->toData().data()); } + else { + LOG4CXX_INFO(logger, m_user << ": Numeric message received: " << message->toData().data()); + } } void MyIrcSession::awayTimeout() { diff --git a/libtransport/Conversation.cpp b/libtransport/Conversation.cpp index 54bd4948..069b62bb 100644 --- a/libtransport/Conversation.cpp +++ b/libtransport/Conversation.cpp @@ -323,6 +323,7 @@ Swift::Presence::ref Conversation::generatePresence(const std::string &nick, int presence->setType(Swift::Presence::Error); presence->addPayload(boost::shared_ptr(new Swift::MUCPayload())); presence->addPayload(boost::shared_ptr(new Swift::ErrorPayload(Swift::ErrorPayload::Conflict))); + LOG4CXX_INFO(logger, m_jid.toString() << ": Generating error presence: PARTICIPANT_FLAG_CONFLICT"); return presence; } else if (flag & PARTICIPANT_FLAG_NOT_AUTHORIZED) { @@ -330,6 +331,7 @@ Swift::Presence::ref Conversation::generatePresence(const std::string &nick, int presence->setType(Swift::Presence::Error); presence->addPayload(boost::shared_ptr(new Swift::MUCPayload())); presence->addPayload(boost::shared_ptr(new Swift::ErrorPayload(Swift::ErrorPayload::NotAuthorized, Swift::ErrorPayload::Auth, statusMessage))); + LOG4CXX_INFO(logger, m_jid.toString() << ": Generating error presence: PARTICIPANT_FLAG_NOT_AUTHORIZED"); return presence; } else if (flag & PARTICIPANT_FLAG_ROOM_NOT_FOUD) { @@ -337,6 +339,7 @@ Swift::Presence::ref Conversation::generatePresence(const std::string &nick, int presence->setType(Swift::Presence::Error); presence->addPayload(boost::shared_ptr(new Swift::MUCPayload())); presence->addPayload(boost::shared_ptr(new Swift::ErrorPayload(Swift::ErrorPayload::ItemNotFound, Swift::ErrorPayload::Cancel, statusMessage))); + LOG4CXX_INFO(logger, m_jid.toString() << ": Generating error presence: PARTICIPANT_FLAG_ROOM_NOT_FOUND"); return presence; } else { @@ -432,6 +435,7 @@ void Conversation::handleParticipantChanged(const std::string &nick, Conversatio // from the room. This code must be extended in case we start sending error // presences in other situations. if (presence->getType() == Swift::Presence::Error) { + LOG4CXX_INFO(logger, m_jid.toString() << ": Leaving the conversation " << m_legacyName << " because of error."); m_conversationManager->getUser()->leaveRoom(m_legacyName); } }