projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix #984 without breaking topic input
[quassel.git]
/
src
/
core
/
ircparser.cpp
diff --git
a/src/core/ircparser.cpp
b/src/core/ircparser.cpp
index
260e80b
..
605dd2e
100644
(file)
--- a/
src/core/ircparser.cpp
+++ b/
src/core/ircparser.cpp
@@
-34,7
+34,7
@@
IrcParser::IrcParser(CoreSession *session) :
QObject(session),
_coreSession(session)
{
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) {
}
bool IrcParser::checkParamCount(const QString &cmd, const QList<QByteArray> ¶ms, int minParams) {
@@
-50,12
+50,18
@@
QByteArray IrcParser::decrypt(Network *network, const QString &bufferName, const
if(message.isEmpty())
return message;
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
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
}
return message;
#endif
}
@@
-130,16
+136,18
@@
void IrcParser::processNetworkIncoming(NetworkDataEvent *e) {
QList<Event *> events;
EventManager::EventType type = EventManager::Invalid;
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) {
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;
}
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 {
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) {
QString typeName = QLatin1String("IrcEvent") + cmd.at(0).toUpper() + cmd.mid(1).toLower();
type = eventManager()->eventTypeByName(typeName);
if(type == EventManager::Invalid) {
@@
-213,7
+221,7
@@
void IrcParser::processNetworkIncoming(NetworkDataEvent *e) {
if(!net->isChannelName(target))
target = nickFromMask(prefix);
}
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;
@@
-294,6
+302,6
@@
void IrcParser::processNetworkIncoming(NetworkDataEvent *e) {
}
foreach(Event *event, events) {
}
foreach(Event *event, events) {
-
coreSession()->eventManager()->send
Event(event);
+
emit new
Event(event);
}
}
}
}