X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fircserverhandler.cpp;h=34573d9b76cd36e57cc2347df8b9baee3e652e67;hb=35e22cad1de9084bc3ddf664bc43e5a620adf1ae;hp=4d706d69805a6601efb417aa20cea8b4dff0b604;hpb=44a6109557eafd29cc6079dd6521ad3cf80c15b3;p=quassel.git diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index 4d706d69..34573d9b 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -94,6 +94,9 @@ void IrcServerHandler::handleServerMsg(QByteArray msg) { params.removeFirst(); } + // note that the IRC server is still alive + network()->resetPingTimeout(); + // Now we try to find a handler for this message. BTW, I do love the Trolltech guys ;-) handle(cmd, Q_ARG(QString, prefix), Q_ARG(QList, params)); } @@ -306,11 +309,15 @@ void IrcServerHandler::handleNick(const QString &prefix, const QList ? newnick : prefix; + + // the order is cruicial + // otherwise the client would rename the buffer, see that the assigned ircuser doesn't match anymore + // and remove the ircuser from the querybuffer leading to a wrong on/offline state + ircuser->setNick(newnick); coreSession()->renameBuffer(network()->networkId(), newnick, oldnick); + foreach(QString channel, ircuser->channels()) emit displayMsg(Message::Nick, BufferInfo::ChannelBuffer, channel, newnick, sender); - - ircuser->setNick(newnick); } void IrcServerHandler::handleNotice(const QString &prefix, const QList ¶ms) {