X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.cpp;h=968bf425901a02e963176dabe69bd4960e7f36be;hp=f0c7d0b59edbf2819738844f4d635ea3b4e9b9b4;hb=ae97a322751547af21a637ead6c75ddc0162869b;hpb=287674ebe59cf8129645722693391f4b4ad8d240 diff --git a/src/common/signalproxy.cpp b/src/common/signalproxy.cpp index f0c7d0b5..968bf425 100644 --- a/src/common/signalproxy.cpp +++ b/src/common/signalproxy.cpp @@ -200,6 +200,12 @@ SignalProxy::~SignalProxy() { QList 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(); switch(callType) {