QObject(session),
_coreSession(session)
{
-
+ connect(this, SIGNAL(newEvent(Event *)), coreSession()->eventManager(), SLOT(postEvent(Event *)));
}
bool IrcParser::checkParamCount(const QString &cmd, const QList<QByteArray> ¶ms, int minParams) {
if(message.isEmpty())
return message;
+ if(!Cipher::neededFeaturesAvailable())
+ return message;
+
Cipher *cipher = qobject_cast<CoreNetwork *>(network)->cipher(bufferName);
if(!cipher)
return message;
return isTopic? cipher->decryptTopic(message) : cipher->decrypt(message);
#else
+ Q_UNUSED(network);
+ Q_UNUSED(bufferName);
+ Q_UNUSED(isTopic);
return message;
#endif
}
QList<Event *> events;
EventManager::EventType type = EventManager::Invalid;
- // numeric replies have the target as first param (RFC 2812 - 2.4). this is usually our own nick. Remove this!
uint num = cmd.toUInt();
if(num > 0) {
+ // numeric reply
if(params.count() == 0) {
qWarning() << "Message received from server violates RFC and is ignored!" << msg;
return;
}
+ // numeric replies have the target as first param (RFC 2812 - 2.4). this is usually our own nick. Remove this!
target = net->serverDecode(params.takeFirst());
type = EventManager::IrcEventNumeric;
} else {
+ // any other irc command
QString typeName = QLatin1String("IrcEvent") + cmd.at(0).toUpper() + cmd.mid(1).toLower();
type = eventManager()->eventTypeByName(typeName);
if(type == EventManager::Invalid) {
if(!net->isChannelName(target))
target = nickFromMask(prefix);
}
- events << new IrcEventRawMessage(EventManager::IrcEventRawNotice, net, msg, prefix, target, e->timestamp());
+ events << new IrcEventRawMessage(EventManager::IrcEventRawNotice, net, params[1], prefix, target, e->timestamp());
}
}
break;
break;
case 333: /* Topic set by... */
- if(params.count() >= 2) {
+ if(params.count() >= 3) {
QString channel = net->serverDecode(params.at(0));
decParams << channel << net->serverDecode(params.at(1));
decParams << net->channelDecode(channel, params.at(2));
}
foreach(Event *event, events) {
- coreSession()->eventManager()->sendEvent(event);
+ emit newEvent(event);
}
}