- QVariant item;
- while (readSocketData(item)) {
- // if no sigproxy is set, we're in handshake mode and let the data be handled elsewhere
+ // don't try to read more data if we're already closing
+ if (socket()->state() != QAbstractSocket::ConnectedState)
+ return;
+
+ QByteArray data;
+ while (readSocketData(data)) {
+ // data contains always a serialized QVector<QVariant>
+ QDataStream stream(data);
+ stream.setVersion(QDataStream::Qt_4_2);
+ QVariantList list;
+ stream >> list;
+ if (stream.status() != QDataStream::Ok) {
+ close("Peer sent corrupt data, closing down!");
+ return;
+ }
+
+ // if no sigproxy is set, we're in handshake mode