void IrcServerHandler::handleNick(const QString &prefix, const QList<QByteArray> ¶ms) {
IrcUser *ircuser = network()->updateNickFromMask(prefix);
- Q_ASSERT(ircuser);
+ if(!ircuser) {
+ qWarning() << "IrcServerHandler::handleNick(): Unknown IrcUser!";
+ return;
+ }
QString newnick = serverDecode(params[0]);
QString oldnick = ircuser->nick();
void IrcServerHandler::handlePart(const QString &prefix, const QList<QByteArray> ¶ms) {
IrcUser *ircuser = network()->updateNickFromMask(prefix);
QString channel = serverDecode(params[0]);
- Q_ASSERT(ircuser);
+ if(!ircuser) {
+ qWarning() << "IrcServerHandler::handlePart(): Unknown IrcUser!";
+ return;
+ }
ircuser->partChannel(channel);
void IrcServerHandler::handlePrivmsg(const QString &prefix, const QList<QByteArray> ¶ms) {
IrcUser *ircuser = network()->updateNickFromMask(prefix);
- Q_ASSERT(ircuser);
+ if(!ircuser) {
+ qWarning() << "IrcServerHandler::handlePrivmsg(): Unknown IrcUser!";
+ return;
+ }
if(params.isEmpty()) {
qWarning() << "IrcServerHandler::handlePrivmsg(): received PRIVMSG without target or message from:" << prefix;
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";
}
}
+/* RPL_UMODEIS - "<user_modes> [<user_mode_params>]" */
+void IrcServerHandler::handle221(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ //TODO: save information in network object
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" ")));
+}
+
+/* RPL_STATSCONN - "Highest connection cout: 8000 (7999 clients)" */
+void IrcServerHandler::handle250(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ //TODO: save information in network object
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" ")));
+}
+
+/* RPL_LOCALUSERS - "Current local user: 5024 Max: 7999 */
+void IrcServerHandler::handle265(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ //TODO: save information in network object
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" ")));
+}
+
+/* RPL_GLOBALUSERS - "Current global users: 46093 Max: 47650" */
+void IrcServerHandler::handle266(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ //TODO: save information in network object
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" ")));
+}
/*
WHOIS-Message:
}
}
+/* RPL_WHOISSERVICE - "<user> is registered nick" */
+void IrcServerHandler::handle307(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ QString whoisServiceReply = serverDecode(params).join(" ");
+ IrcUser *ircuser = network()->ircUser(serverDecode(params[0]));
+ if(ircuser) {
+ ircuser->setWhoisServiceReply(whoisServiceReply);
+ }
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1").arg(whoisServiceReply));
+}
+
+/* RPL_SUSERHOST - "<user> is available for help." */
+void IrcServerHandler::handle310(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ QString suserHost = serverDecode(params).join(" ");
+ IrcUser *ircuser = network()->ircUser(serverDecode(params[0]));
+ if(ircuser) {
+ ircuser->setSuserHost(suserHost);
+ }
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1").arg(suserHost));
+}
+
/* RPL_WHOISUSER - "<nick> <user> <host> * :<real name>" */
void IrcServerHandler::handle311(const QString &prefix, const QList<QByteArray> ¶ms) {
Q_UNUSED(prefix)
/* RPL_ENDOFWHO: "<name> :End of WHO list" */
void IrcServerHandler::handle315(const QString &prefix, const QList<QByteArray> ¶ms) {
- Q_UNUSED(prefix)
- // FIXME temporarily made silent
- Q_UNUSED(params)
- // emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Who] %1").arg(serverDecode(params).join(" ")));
+ Q_UNUSED(prefix);
+ QStringList p = serverDecode(params);
+ if(p.count()) {
+ if(networkConnection()->setAutoWhoDone(p[0])) {
+ return; // stay silent
+ }
+ p.takeLast(); // should be "End of WHO list"
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Who] End of /WHO list for %1").arg(p.join(" ")));
+ }
}
/* RPL_WHOISIDLE - "<nick> <integer> :seconds idle"
ircuser->setRealName(serverDecode(params.last()).section(" ", 1));
}
- // FIXME temporarily made silent
- //emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Who] %1").arg(serverDecode(params).join(" ")));
+ if(!networkConnection()->isAutoWhoInProgress(channel)) {
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Who] %1").arg(serverDecode(params).join(" ")));
+ }
}
/* RPL_NAMREPLY */