fixed crashes when invalid data is received by the signalProxy and added debug inform...
[quassel.git] / src / common / signalproxy.cpp
index f0c7d0b..968bf42 100644 (file)
@@ -200,6 +200,12 @@ SignalProxy::~SignalProxy() {
   QList<QObject*> senders = _relayHash.keys();
   foreach(QObject* sender, senders)
     detachObject(sender);
+
+  // close peer connections
+  foreach(QIODevice *device, _peerByteCount.keys()) {
+    device->close();
+    delete device;
+  }
 }
 
 void SignalProxy::setProxyMode(ProxyMode mode) {
@@ -587,6 +593,11 @@ void SignalProxy::dispatchSignal(const RequestType &requestType, const QVariantL
 void SignalProxy::receivePeerSignal(QIODevice *sender, const QVariant &packedFunc) {
   QVariantList params(packedFunc.toList());
 
+  if(params.isEmpty()) {
+    qWarning() << "SignalProxy::receivePeerSignal(): received incompatible Data:" << packedFunc;
+    return;
+  }
+  
   int callType = params.takeFirst().value<int>();
 
   switch(callType) {