minor code cleanup
authorMarcus Eggenberger <egs@quassel-irc.org>
Mon, 18 Feb 2008 14:23:21 +0000 (14:23 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Mon, 18 Feb 2008 14:23:21 +0000 (14:23 +0000)
src/core/ircserverhandler.cpp
src/core/ircserverhandler.h
version.inc

index 43c3126..9318f82 100644 (file)
@@ -103,7 +103,7 @@ void IrcServerHandler::handleServerMsg(QByteArray msg) {
 }
 
 
-void IrcServerHandler::defaultHandler(QString cmd, QString prefix, QList<QByteArray> rawparams) {
+void IrcServerHandler::defaultHandler(QString cmd, const QString &prefix, const QList<QByteArray> &rawparams) {
   // we assume that all this happens in server encoding
   QStringList params;
   foreach(QByteArray r, rawparams) params << serverDecode(r);
@@ -165,7 +165,7 @@ void IrcServerHandler::defaultHandler(QString cmd, QString prefix, QList<QByteAr
 //******************************/
 // IRC SERVER HANDLER
 //******************************/
-void IrcServerHandler::handleJoin(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handleJoin(const QString &prefix, const QList<QByteArray> &params) {
   Q_ASSERT(params.count() == 1);
   QString channel = serverDecode(params[0]);
   IrcUser *ircuser = network()->updateNickFromMask(prefix);
@@ -174,7 +174,7 @@ void IrcServerHandler::handleJoin(QString prefix, QList<QByteArray> params) {
   ircuser->joinChannel(channel);
 }
 
-void IrcServerHandler::handleKick(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handleKick(const QString &prefix, const QList<QByteArray> &params) {
   network()->updateNickFromMask(prefix);
   IrcUser *victim = network()->ircUser(params[1]);
   QString channel = serverDecode(params[0]);
@@ -191,7 +191,7 @@ void IrcServerHandler::handleKick(QString prefix, QList<QByteArray> params) {
   emit displayMsg(Message::Kick, BufferInfo::ChannelBuffer, channel, msg, prefix);
 }
 
-void IrcServerHandler::handleMode(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handleMode(const QString &prefix, const QList<QByteArray> &params) {
   if(params.count() < 2) {
     emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", tr("Received invalid MODE from %s: %s").arg(prefix).arg(serverDecode(params).join(" ")));
     return;
@@ -201,10 +201,10 @@ void IrcServerHandler::handleMode(QString prefix, QList<QByteArray> params) {
     // Channel Modes
     emit displayMsg(Message::Mode, BufferInfo::ChannelBuffer, serverDecode(params[0]), serverDecode(params).join(" "), prefix);
 
-    IrcChannel *channel = network()->ircChannel(params.takeFirst());
+    IrcChannel *channel = network()->ircChannel(params[0]);
     // FIXME: currently the IrcChannels only support PREFIX-Modes for users
     // This cannot be fixed unless the SignalProxy() doesn't rely on methodIds anymore
-    QString modes = params.takeFirst();
+    QString modes = params[1];
     bool add = true;
     int modeIndex = 0;
     for(int c = 0; c < modes.length(); c++) {
@@ -235,7 +235,7 @@ void IrcServerHandler::handleMode(QString prefix, QList<QByteArray> params) {
   }
 }
 
-void IrcServerHandler::handleNick(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handleNick(const QString &prefix, const QList<QByteArray> &params) {
   IrcUser *ircuser = network()->updateNickFromMask(prefix);
   Q_ASSERT(ircuser);
   QString newnick = serverDecode(params[0]);
@@ -251,7 +251,7 @@ void IrcServerHandler::handleNick(QString prefix, QList<QByteArray> params) {
   ircuser->setNick(newnick);
 }
 
-void IrcServerHandler::handleNotice(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handleNotice(const QString &prefix, const QList<QByteArray> &params) {
   if(params.count() < 2) {
     qWarning() << "IrcServerHandler::handleNotice(): not enough Parameters:" << prefix << serverDecode(params);
     return;
@@ -276,7 +276,7 @@ void IrcServerHandler::handleNotice(QString prefix, QList<QByteArray> params) {
   networkConnection()->ctcpHandler()->parse(Message::Notice, sender, target, userDecode(sender, params[1]));
 }
 
-void IrcServerHandler::handlePart(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handlePart(const QString &prefix, const QList<QByteArray> &params) {
   IrcUser *ircuser = network()->updateNickFromMask(prefix);
   QString channel = serverDecode(params[0]);
   Q_ASSERT(ircuser);
@@ -290,29 +290,36 @@ void IrcServerHandler::handlePart(QString prefix, QList<QByteArray> params) {
   emit displayMsg(Message::Part, BufferInfo::ChannelBuffer, channel, msg, prefix);
 }
 
-void IrcServerHandler::handlePing(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handlePing(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
   putCmd("PONG", params);
 }
 
-void IrcServerHandler::handlePrivmsg(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handlePrivmsg(const QString &prefix, const QList<QByteArray> &params) {
   IrcUser *ircuser = network()->updateNickFromMask(prefix);
   Q_ASSERT(ircuser);
-  if(params.count() < 2)
-    params << QByteArray("");
 
+  if(params.isEmpty()) {
+    qWarning() << "IrcServerHandler::handlePrivmsg(): received PRIVMSG without target or message from:" << prefix;
+    return;
+  }
+     
   QString target = serverDecode(params[0]);
 
+  QByteArray msg = params.count() < 2
+    ? QByteArray("")
+    : params[1];
+
   // are we the target?
   if(network()->isMyNick(target))
     target = nickFromMask(ircuser->nick());
 
   // it's possible to pack multiple privmsgs into one param using ctcp
   // - > we let the ctcpHandler do the work
-  networkConnection()->ctcpHandler()->parse(Message::Plain, prefix, target, userDecode(ircuser->nick(), params[1]));
+  networkConnection()->ctcpHandler()->parse(Message::Plain, prefix, target, userDecode(ircuser->nick(), msg));
 }
 
-void IrcServerHandler::handleQuit(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handleQuit(const QString &prefix, const QList<QByteArray> &params) {
   IrcUser *ircuser = network()->updateNickFromMask(prefix);
   Q_ASSERT(ircuser);
 
@@ -326,7 +333,7 @@ void IrcServerHandler::handleQuit(QString prefix, QList<QByteArray> params) {
   network()->removeIrcUser(nickFromMask(prefix));
 }
 
-void IrcServerHandler::handleTopic(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handleTopic(const QString &prefix, const QList<QByteArray> &params) {
   IrcUser *ircuser = network()->updateNickFromMask(prefix);
   QString channel = serverDecode(params[0]);
   QString topic = channelDecode(channel, params[1]);
@@ -338,7 +345,7 @@ void IrcServerHandler::handleTopic(QString prefix, QList<QByteArray> params) {
 }
 
 /* RPL_WELCOME */
-void IrcServerHandler::handle001(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle001(const QString &prefix, const QList<QByteArray> &params) {
   // there should be only one param: "Welcome to the Internet Relay Network <nick>!<user>@<host>"
   QString param = serverDecode(params[0]);
   QString myhostmask = param.section(' ', -1, -1);
@@ -350,17 +357,26 @@ void IrcServerHandler::handle001(QString prefix, QList<QByteArray> params) {
 
 /* RPL_ISUPPORT */
 // TODO Complete 005 handling, also use sensible defaults for non-sent stuff
-void IrcServerHandler::handle005(QString prefix, QList<QByteArray> params) {
-  Q_UNUSED(prefix)
-  QString rpl_isupport_suffix = serverDecode(params.takeLast());
-  if(rpl_isupport_suffix.toLower() != QString("are supported by this server")) {
+void IrcServerHandler::handle005(const QString &prefix, const QList<QByteArray> &params) {
+  Q_UNUSED(prefix);
+  const int numParams = params.size();
+  if(numParams < 1) {
+    qWarning() << "IrcServerHandler::handle005(): received RPL_ISUPPORT (005) with too few parameters:" << serverDecode(params);
+    return;
+  }
+    
+  QString rpl_isupport_suffix = serverDecode(params.last());
+  if(!rpl_isupport_suffix.toLower().contains("supported")) {
     qWarning() << "Received invalid RPL_ISUPPORT! Suffix is:" << rpl_isupport_suffix << "Excpected: are supported by this server";
     return;
   }
-  
-  foreach(QString param, serverDecode(params)) {
-    QString key = param.section("=", 0, 0);
-    QString value = param.section("=", 1);
+
+  QString rawSupport;
+  QString key, value;
+  for(int i = 0; i < numParams - 1; i++) {
+    QString rawSupport = serverDecode(params[i]);
+    QString key = rawSupport.section("=", 0, 0);
+    QString value = rawSupport.section("=", 1);
     network()->addSupport(key, value);
   }
 }
@@ -381,7 +397,7 @@ WHOWAS-Message:
 
 
 /*   RPL_AWAY - "<nick> :<away message>" */
-void IrcServerHandler::handle301(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle301(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
   QString nickName = serverDecode(params[0]);
   QString awayMessage = userDecode(nickName, params.last());
@@ -411,7 +427,7 @@ void IrcServerHandler::handle301(QString prefix, QList<QByteArray> params) {
 }
 
 /*  RPL_WHOISUSER - "<nick> <user> <host> * :<real name>" */
-void IrcServerHandler::handle311(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle311(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   _whois = true;
   IrcUser *ircuser = network()->ircUser(serverDecode(params[0]));
@@ -424,7 +440,7 @@ void IrcServerHandler::handle311(QString prefix, QList<QByteArray> params) {
 }
  
 /*  RPL_WHOISSERVER -  "<nick> <server> :<server info>" */
-void IrcServerHandler::handle312(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle312(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   IrcUser *ircuser = network()->ircUser(serverDecode(params[0]));
   if(ircuser) {
@@ -438,7 +454,7 @@ void IrcServerHandler::handle312(QString prefix, QList<QByteArray> params) {
 }
 
 /*  RPL_WHOISOPERATOR - "<nick> :is an IRC operator" */
-void IrcServerHandler::handle313(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle313(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   IrcUser *ircuser = network()->ircUser(serverDecode(params[0]));
   if(ircuser) {
@@ -448,13 +464,13 @@ void IrcServerHandler::handle313(QString prefix, QList<QByteArray> params) {
 }
 
 /*  RPL_WHOWASUSER - "<nick> <user> <host> * :<real name>" */
-void IrcServerHandler::handle314(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle314(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whowas] %1").arg(serverDecode(params).join(" ")));
 }
 
 /*  RPL_ENDOFWHO: "<name> :End of WHO list" */
-void IrcServerHandler::handle315(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle315(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Who] %1").arg(serverDecode(params).join(" ")));
 }
@@ -462,7 +478,7 @@ void IrcServerHandler::handle315(QString prefix, QList<QByteArray> params) {
 /*  RPL_WHOISIDLE - "<nick> <integer> :seconds idle" 
    (real life: "<nick> <integer> <integer> :seconds idle, signon time) */
    //TODO: parse real life message
-void IrcServerHandler::handle317(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle317(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
   QString nick = serverDecode(params[0]);
   IrcUser *ircuser = network()->ircUser(nick);
@@ -478,20 +494,20 @@ void IrcServerHandler::handle317(QString prefix, QList<QByteArray> params) {
 }
 
 /*  RPL_ENDOFWHOIS - "<nick> :End of WHOIS list" */
-void IrcServerHandler::handle318(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle318(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   _whois = false;
   emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1").arg(serverDecode(params).join(" ")));
 }
 
 /*  RPL_WHOISCHANNELS - "<nick> :*( ( "@" / "+" ) <channel> " " )" */
-void IrcServerHandler::handle319(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle319(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1").arg(serverDecode(params).join(" ")));
 }
 
 /* RPL_NOTOPIC */
-void IrcServerHandler::handle331(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle331(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
   QString channel = serverDecode(params[0]);
   network()->ircChannel(channel)->setTopic(QString());
@@ -499,7 +515,7 @@ void IrcServerHandler::handle331(QString prefix, QList<QByteArray> params) {
 }
 
 /* RPL_TOPIC */
-void IrcServerHandler::handle332(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle332(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
   QString channel = serverDecode(params[0]);
   QString topic = channelDecode(channel, params[1]);
@@ -508,7 +524,7 @@ void IrcServerHandler::handle332(QString prefix, QList<QByteArray> params) {
 }
 
 /* Topic set by... */
-void IrcServerHandler::handle333(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle333(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
   QString channel = serverDecode(params[0]);
   emit displayMsg(Message::Server, BufferInfo::ChannelBuffer, channel,
@@ -517,7 +533,7 @@ void IrcServerHandler::handle333(QString prefix, QList<QByteArray> params) {
 
 /*  RPL_WHOREPLY: "<channel> <user> <host> <server> <nick> 
               ( "H" / "G" > ["*"] [ ( "@" / "+" ) ] :<hopcount> <real name>" */
-void IrcServerHandler::handle352(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle352(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   QString channel = serverDecode(params[0]);
   IrcUser *ircuser = network()->ircUser(serverDecode(params[4]));
@@ -535,12 +551,19 @@ void IrcServerHandler::handle352(QString prefix, QList<QByteArray> params) {
 }
 
 /* RPL_NAMREPLY */
-void IrcServerHandler::handle353(QString prefix, QList<QByteArray> params) {
-  Q_UNUSED(prefix)
-  params.removeFirst(); // either "=", "*" or "@" indicating a public, private or secret channel
-  QString channelname = serverDecode(params.takeFirst());
+void IrcServerHandler::handle353(const QString &prefix, const QList<QByteArray> &params) {
+  Q_UNUSED(prefix);
+  const int numParams = params.count();
+  if(numParams < 2) {
+    qWarning() << "IrcServerHandler::handler353() received not enough params:" << serverDecode(params);
+    return;
+  }
+    
+  // param[0] is either "=", "*" or "@" indicating a public, private or secret channel
+  // we don't use this information at the time beeing
+  QString channelname = serverDecode(params[1]);
 
-  foreach(QString nick, serverDecode(params.takeFirst()).split(' ')) {
+  foreach(QString nick, serverDecode(params[2]).split(' ')) {
     QString mode = QString();
 
     if(network()->prefixes().contains(nick[0])) {
@@ -557,13 +580,13 @@ void IrcServerHandler::handle353(QString prefix, QList<QByteArray> params) {
 }
 
 /*  RPL_ENDOFWHOWAS - "<nick> :End of WHOWAS" */
-void IrcServerHandler::handle369(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle369(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix)
   emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whowas] %1").arg(serverDecode(params).join(" ")));
 }
 
 /* ERR_ERRONEUSNICKNAME */
-void IrcServerHandler::handle432(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle432(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
 
   if(params.size() < 2) {
@@ -583,7 +606,7 @@ void IrcServerHandler::handle432(QString prefix, QList<QByteArray> params) {
 }
 
 /* ERR_NICKNAMEINUSE */
-void IrcServerHandler::handle433(QString prefix, QList<QByteArray> params) {
+void IrcServerHandler::handle433(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
 
   QString errnick = serverDecode(params[0]);
index ace85f6..94e62b1 100644 (file)
@@ -33,38 +33,38 @@ public:
   void handleServerMsg(QByteArray rawMsg);
 
 public slots:
-  void handleJoin(QString, QList<QByteArray>);
-  void handleKick(QString, QList<QByteArray>);
-  void handleMode(QString, QList<QByteArray>);
-  void handleNick(QString, QList<QByteArray>);
-  void handleNotice(QString, QList<QByteArray>);
-  void handlePart(QString, QList<QByteArray>);
-  void handlePing(QString, QList<QByteArray>);
-  void handlePrivmsg(QString, QList<QByteArray>);
-  void handleQuit(QString, QList<QByteArray>);
-  void handleTopic(QString, QList<QByteArray>);
+  void handleJoin(const QString &prefix, const QList<QByteArray> &params);
+  void handleKick(const QString &prefix, const QList<QByteArray> &params);
+  void handleMode(const QString &prefix, const QList<QByteArray> &params);
+  void handleNick(const QString &prefix, const QList<QByteArray> &params);
+  void handleNotice(const QString &prefix, const QList<QByteArray> &params);
+  void handlePart(const QString &prefix, const QList<QByteArray> &params);
+  void handlePing(const QString &prefix, const QList<QByteArray> &params);
+  void handlePrivmsg(const QString &prefix, const QList<QByteArray> &params);
+  void handleQuit(const QString &prefix, const QList<QByteArray> &params);
+  void handleTopic(const QString &prefix, const QList<QByteArray> &params);
 
-  void handle001(QString, QList<QByteArray>);   // RPL_WELCOME
-  void handle005(QString, QList<QByteArray>);   // RPL_ISUPPORT
-  void handle301(QString, QList<QByteArray>);   // RPL_AWAY
-  void handle311(QString, QList<QByteArray>);   // RPL_WHOISUSER
-  void handle312(QString, QList<QByteArray>);   // RPL_WHOISSERVER
-  void handle313(QString, QList<QByteArray>);   // RPL_WHOISOPERATOR
-  void handle314(QString, QList<QByteArray>);   // RPL_WHOWASUSER
-  void handle315(QString, QList<QByteArray>);   // RPL_ENDOFWHO
-  void handle317(QString, QList<QByteArray>);   // RPL_WHOISIDLE
-  void handle318(QString, QList<QByteArray>);   // RPL_ENDOFWHOIS
-  void handle319(QString, QList<QByteArray>);   // RPL_WHOISCHANNELS
-  void handle331(QString, QList<QByteArray>);   // RPL_NOTOPIC
-  void handle332(QString, QList<QByteArray>);   // RPL_TOPIC
-  void handle333(QString, QList<QByteArray>);   // Topic set by...
-  void handle352(QString, QList<QByteArray>);   //  RPL_WHOREPLY
-  void handle353(QString, QList<QByteArray>);   // RPL_NAMREPLY
-  void handle369(QString, QList<QByteArray>);   // RPL_ENDOFWHOWAS
-  void handle432(QString, QList<QByteArray>);   // ERR_ERRONEUSNICKNAME
-  void handle433(QString, QList<QByteArray>);   // ERR_NICKNAMEINUSE
+  void handle001(const QString &prefix, const QList<QByteArray> &params);   // RPL_WELCOME
+  void handle005(const QString &prefix, const QList<QByteArray> &params);   // RPL_ISUPPORT
+  void handle301(const QString &prefix, const QList<QByteArray> &params);   // RPL_AWAY
+  void handle311(const QString &prefix, const QList<QByteArray> &params);   // RPL_WHOISUSER
+  void handle312(const QString &prefix, const QList<QByteArray> &params);   // RPL_WHOISSERVER
+  void handle313(const QString &prefix, const QList<QByteArray> &params);   // RPL_WHOISOPERATOR
+  void handle314(const QString &prefix, const QList<QByteArray> &params);   // RPL_WHOWASUSER
+  void handle315(const QString &prefix, const QList<QByteArray> &params);   // RPL_ENDOFWHO
+  void handle317(const QString &prefix, const QList<QByteArray> &params);   // RPL_WHOISIDLE
+  void handle318(const QString &prefix, const QList<QByteArray> &params);   // RPL_ENDOFWHOIS
+  void handle319(const QString &prefix, const QList<QByteArray> &params);   // RPL_WHOISCHANNELS
+  void handle331(const QString &prefix, const QList<QByteArray> &params);   // RPL_NOTOPIC
+  void handle332(const QString &prefix, const QList<QByteArray> &params);   // RPL_TOPIC
+  void handle333(const QString &prefix, const QList<QByteArray> &params);   // Topic set by...
+  void handle352(const QString &prefix, const QList<QByteArray> &params);   //  RPL_WHOREPLY
+  void handle353(const QString &prefix, const QList<QByteArray> &params);   // RPL_NAMREPLY
+  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 defaultHandler(QString cmd, QString prefix, QList<QByteArray> params);
+  void defaultHandler(QString cmd, const QString &prefix, const QList<QByteArray> &params);
 
 private:
   void tryNextNick(const QString &errnick);
index 329e0ff..f104bf9 100644 (file)
@@ -5,7 +5,7 @@
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-02-18";
-  quasselBuild = 531;
+  quasselBuild = 532;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 526;