X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.cpp;h=058e3cd887927ef4a0c149066bf00c986518f3c1;hp=14aea7ace9632cb13b6ffb6ba0414c05e125b4e5;hb=79fbcfb49f7cc92a89f0158ebac1a3006a559e8a;hpb=cebcb6c30e4f866aa1b3d4e07e1a93dd7f178cea diff --git a/src/common/signalproxy.cpp b/src/common/signalproxy.cpp index 14aea7ac..058e3cd8 100644 --- a/src/common/signalproxy.cpp +++ b/src/common/signalproxy.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -195,8 +195,8 @@ void SignalProxy::SignalRelay::attachSignal(QObject *sender, int signalId, const if(!funcName.isEmpty()) { fn = QMetaObject::normalizedSignature(funcName); } else { - fn = SIGNAL(); - fn += sender->metaObject()->method(signalId).signature(); + fn = SIGNAL(fakeMethodSignature()); + fn = fn.replace("fakeMethodSignature()", sender->metaObject()->method(signalId).signature()); } _slots[slotId] = Signal(sender, signalId, fn); @@ -660,6 +660,17 @@ void SignalProxy::receivePackedFunc(AbstractPeer *sender, const QVariant &packed } void SignalProxy::receivePeerSignal(AbstractPeer *sender, const RequestType &requestType, const QVariantList ¶ms) { + switch(requestType) { + // list all RequestTypes that shouldnot trigger a heartbeat counter reset here + case HeartBeatReply: + break; + default: + if(sender->type() == AbstractPeer::IODevicePeer) { + IODevicePeer *ioPeer = static_cast(sender); + ioPeer->sentHeartBeats = 0; + } + } + switch(requestType) { case RpcCall: if(params.empty()) @@ -925,6 +936,9 @@ void SignalProxy::writeDataToDevice(QIODevice *dev, const QVariant &item, bool c } bool SignalProxy::readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVariant &item, bool compressed) { + if(!dev) + return false; + QDataStream in(dev); in.setVersion(QDataStream::Qt_4_2); @@ -934,12 +948,12 @@ bool SignalProxy::readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVarian } if(blockSize > 1 << 22) { - disconnectDevice(dev, tr("Client tried to send package larger than max package size!")); + disconnectDevice(dev, tr("Peer tried to send package larger than max package size!")); return false; } if(blockSize == 0) { - disconnectDevice(dev, tr("Client tried to send 0 byte package!")); + disconnectDevice(dev, tr("Peer tried to send 0 byte package!")); return false; } @@ -956,7 +970,7 @@ bool SignalProxy::readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVarian if(nbytes <= 4) { const char *data = rawItem.constData(); if(nbytes < 4 || (data[0]!=0 || data[1]!=0 || data[2]!=0 || data[3]!=0)) { - disconnectDevice(dev, tr("Client sent corrupted compressed data!")); + disconnectDevice(dev, tr("Peer sent corrupted compressed data!")); return false; } } @@ -971,7 +985,7 @@ bool SignalProxy::readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVarian } if(!item.isValid()) { - disconnectDevice(dev, tr("Client sent corrupt data: unable to load QVariant!")); + disconnectDevice(dev, tr("Peer sent corrupt data: unable to load QVariant!")); return false; }