// IRC SERVER HANDLER
//******************************/
void IrcServerHandler::handleJoin(const QString &prefix, const QList<QByteArray> ¶ms) {
- Q_ASSERT(params.count() == 1);
+ if(params.count() < 1) return;
QString channel = serverDecode(params[0]);
IrcUser *ircuser = network()->updateNickFromMask(prefix);
emit displayMsg(Message::Join, BufferInfo::ChannelBuffer, channel, channel, prefix);
//qDebug() << "IrcServerHandler::handleJoin()" << prefix << params;
ircuser->joinChannel(channel);
- if(network()->isMe(ircuser)) network()->addPersistentChannel(channel, networkConnection()->channelKey(channel));
+ if(network()->isMe(ircuser)) networkConnection()->setChannelJoined(channel);
}
void IrcServerHandler::handleKick(const QString &prefix, const QList<QByteArray> ¶ms) {
network()->updateNickFromMask(prefix);
IrcUser *victim = network()->ircUser(params[1]);
+ if(!victim) return;
QString channel = serverDecode(params[0]);
- Q_ASSERT(victim);
victim->partChannel(channel);
msg = userDecode(ircuser->nick(), params[1]);
emit displayMsg(Message::Part, BufferInfo::ChannelBuffer, channel, msg, prefix);
- if(network()->isMe(ircuser)) network()->removePersistentChannel(channel);
+ if(network()->isMe(ircuser)) networkConnection()->setChannelParted(channel);
}
void IrcServerHandler::handlePing(const QString &prefix, const QList<QByteArray> ¶ms) {
void IrcServerHandler::handleQuit(const QString &prefix, const QList<QByteArray> ¶ms) {
IrcUser *ircuser = network()->updateNickFromMask(prefix);
- Q_ASSERT(ircuser);
+ if(!ircuser) return;
QString msg;
if(params.count())
void IrcServerHandler::handleTopic(const QString &prefix, const QList<QByteArray> ¶ms) {
IrcUser *ircuser = network()->updateNickFromMask(prefix);
+ if(!ircuser) return;
QString channel = serverDecode(params[0]);
- QString topic = channelDecode(channel, params[1]);
- Q_ASSERT(ircuser);
+ QString topic;
+ if(params.count() >= 2) topic = channelDecode(channel, params[1]);
network()->ircChannel(channel)->setTopic(topic);