projects
/
quassel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
26943d1
)
Properly handle multiple spaces in a row in msgs sent by (faulty?) ircds
author
Manuel Nickschas
<sputnick@quassel-irc.org>
Thu, 7 May 2009 18:53:14 +0000
(20:53 +0200)
committer
Manuel Nickschas
<sputnick@quassel-irc.org>
Thu, 7 May 2009 18:54:35 +0000
(20:54 +0200)
Fixes #681.
src/core/ircserverhandler.cpp
patch
|
blob
|
history
diff --git
a/src/core/ircserverhandler.cpp
b/src/core/ircserverhandler.cpp
index
7614d6e
..
14b3507
100644
(file)
--- a/
src/core/ircserverhandler.cpp
+++ b/
src/core/ircserverhandler.cpp
@@
-57,11
+57,23
@@
void IrcServerHandler::handleServerMsg(QByteArray msg) {
// NOTE: This assumes that this is true in raw encoding, but well, hopefully there are no servers running in japanese on protocol level...
int idx = msg.indexOf(" :");
if(idx >= 0) {
// NOTE: This assumes that this is true in raw encoding, but well, hopefully there are no servers running in japanese on protocol level...
int idx = msg.indexOf(" :");
if(idx >= 0) {
- if(msg.length() > idx + 2) trailing = msg.mid(idx + 2);
+ if(msg.length() > idx + 2)
+ trailing = msg.mid(idx + 2);
msg = msg.left(idx);
}
// OK, now it is safe to split...
QList<QByteArray> params = msg.split(' ');
msg = msg.left(idx);
}
// OK, now it is safe to split...
QList<QByteArray> params = msg.split(' ');
+
+ // This could still contain empty elements due to (faulty?) ircds sending multiple spaces in a row
+ // Also, QByteArray is not nearly as convenient to work with as QString for such things :)
+ QList<QByteArray>::iterator iter = params.begin();
+ while(iter != params.end()) {
+ if(iter->isEmpty())
+ iter = params.erase(iter);
+ else
+ ++iter;
+ }
+
if(!trailing.isEmpty()) params << trailing;
if(params.count() < 1) {
qWarning() << "Received invalid string from server!";
if(!trailing.isEmpty()) params << trailing;
if(params.count() < 1) {
qWarning() << "Received invalid string from server!";