Handle 437 (ERR_UNAVAILRESOURCE)
authorManuel Nickschas <sputnick@quassel-irc.org>
Sun, 14 Feb 2010 22:49:28 +0000 (23:49 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sun, 14 Feb 2010 22:51:46 +0000 (23:51 +0100)
src/common/ircuser.cpp
src/core/ircserverhandler.cpp
src/core/ircserverhandler.h

index f1ec7d6..5220025 100644 (file)
@@ -181,7 +181,6 @@ void IrcUser::setHost(const QString &host) {
 
 void IrcUser::setNick(const QString &nick) {
   if(!nick.isEmpty() && nick != _nick) {
-    qDebug() << "setNick" << this << _nick << nick;
     _nick = nick;
     updateObjectName();
     SYNC(ARG(nick))
index 445ca7c..ce15f78 100644 (file)
@@ -1103,6 +1103,24 @@ void IrcServerHandler::handle433(const QString &prefix, const QList<QByteArray>
   tryNextNick(errnick);
 }
 
+/* ERR_UNAVAILRESOURCE */
+void IrcServerHandler::handle437(const QString &prefix, const QList<QByteArray> &params) {
+  Q_UNUSED(prefix);
+  if(!checkParamCount("IrcServerHandler::handle437()", params, 1))
+    return;
+
+  QString errnick = serverDecode(params[0]);
+  emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", tr("Nick/channel is temporarily unavailable: %1").arg(errnick));
+
+  // if there is a problem while connecting to the server -> we handle it
+  // but only if our connection has not been finished yet...
+  if(!network()->currentServer().isEmpty())
+    return;
+
+  if(!network()->isChannelName(errnick))
+    tryNextNick(errnick);
+}
+
 /* Handle signals from Netsplit objects  */
 
 void IrcServerHandler::handleNetsplitJoin(const QString &channel, const QStringList &users, const QStringList &modes, const QString& quitMessage)
index 3b2b875..7948062 100644 (file)
@@ -80,6 +80,7 @@ public slots:
   void handle369(const QString &prefix, const QList<QByteArray> &params);   // RPL_ENDOFWHOWAS
   void handle432(const QString &prefix, const QList<QByteArray> &params);   // ERR_ERRONEUSNICKNAME
   void handle433(const QString &prefix, const QList<QByteArray> &params);   // ERR_NICKNAMEINUSE
+  void handle437(const QString &prefix, const QList<QByteArray> &params);   // ERR_UNAVAILRESOURCE
 
   void defaultHandler(QString cmd, const QString &prefix, const QList<QByteArray> &params);