Don't invoke notifications for own messages, fixes #507
[quassel.git] / src / core / ircserverhandler.cpp
index 4d706d6..bcdcf44 100644 (file)
@@ -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  *
@@ -306,11 +306,15 @@ void IrcServerHandler::handleNick(const QString &prefix, const QList<QByteArray>
     ? 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<QByteArray> &params) {
@@ -381,6 +385,8 @@ void IrcServerHandler::handlePong(const QString &prefix, const QList<QByteArray>
   if(params.count() < 2)
     return;
 
+  network()->resetPong();
+
   QString timestamp = serverDecode(params[1]);
   QTime sendTime = QTime::fromString(timestamp, "hh:mm:ss.zzz");
   if(!sendTime.isValid()) {