projects
/
quassel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
4df78c9
)
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:57:03 +0000
(14:57 +0200)
src/common/signalproxy.cpp
patch
|
blob
|
history
diff --git
a/src/common/signalproxy.cpp
b/src/common/signalproxy.cpp
index
76fccb7
..
2039208
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>
@@
-911,7
+912,7
@@
void SignalProxy::dataAvailable() {
void SignalProxy::writeDataToDevice(QIODevice *dev, const QVariant &item, bool compressed) {
QAbstractSocket* sock = qobject_cast<QAbstractSocket*>(dev);
if(!dev->isOpen() || (sock && sock->state()!=QAbstractSocket::ConnectedState)) {
void SignalProxy::writeDataToDevice(QIODevice *dev, const QVariant &item, bool compressed) {
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;
}
return;
}
@@
-949,6
+950,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;
if(dev->bytesAvailable() < blockSize)
return false;