projects
/
quassel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
fd34d3d
)
limiting package size for the SignalProxy to 4MB
author
Marcus Eggenberger
<egs@quassel-irc.org>
Mon, 14 Jul 2008 12:56:40 +0000
(14:56 +0200)
committer
Marcus Eggenberger
<egs@quassel-irc.org>
Mon, 14 Jul 2008 12:56:40 +0000
(14:56 +0200)
src/common/signalproxy.cpp
patch
|
blob
|
history
diff --git
a/src/common/signalproxy.cpp
b/src/common/signalproxy.cpp
index
22e71f1
..
0f38378
100644
(file)
--- a/
src/common/signalproxy.cpp
+++ b/
src/common/signalproxy.cpp
@@
-23,6
+23,7
@@
#include <QObject>
#include <QIODevice>
#include <QAbstractSocket>
#include <QObject>
#include <QIODevice>
#include <QAbstractSocket>
+#include <QHostAddress>
#include <QHash>
#include <QMultiHash>
#include <QList>
#include <QHash>
#include <QMultiHash>
#include <QList>
@@
-901,7
+902,7
@@
void SignalProxy::dataAvailable() {
void SignalProxy::writeDataToDevice(QIODevice *dev, const QVariant &item) {
QAbstractSocket* sock = qobject_cast<QAbstractSocket*>(dev);
if(!dev->isOpen() || (sock && sock->state()!=QAbstractSocket::ConnectedState)) {
void SignalProxy::writeDataToDevice(QIODevice *dev, const QVariant &item) {
QAbstractSocket* sock = qobject_cast<QAbstractSocket*>(dev);
if(!dev->isOpen() || (sock && sock->state()!=QAbstractSocket::ConnectedState)) {
- qWarning("SignalProxy: Can't call on a closed device");
+ qWarning("SignalProxy: Can't call
write
on a closed device");
return;
}
QByteArray block;
return;
}
QByteArray block;
@@
-922,6
+923,14
@@
bool SignalProxy::readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVarian
in >> blockSize;
}
in >> blockSize;
}
+ if(blockSize > 1 << 22) {
+ qWarning() << qPrintable(tr("Client tried to send package larger than max package size!"));
+ QAbstractSocket* sock = qobject_cast<QAbstractSocket*>(dev);
+ qWarning() << qPrintable(tr("Disconnecting")) << (sock ? qPrintable(sock->peerAddress().toString()) : qPrintable(tr("local client")));
+ dev->close();
+ return false;
+ }
+
if(dev->bytesAvailable() < blockSize)
return false;
in >> item;
if(dev->bytesAvailable() < blockSize)
return false;
in >> item;