X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.cpp;h=17a44c4db5bf4a1c7122a42410c7461cf50ab91e;hp=82b428ac6545bc4090158a4c6c269b84860a238e;hb=5c681a931b5e88fe4407b4282dddc354fe3b63df;hpb=7f88be2edd15277c9121c9bb5fd4d1e89ecfcd6d diff --git a/src/common/signalproxy.cpp b/src/common/signalproxy.cpp index 82b428ac..17a44c4d 100644 --- a/src/common/signalproxy.cpp +++ b/src/common/signalproxy.cpp @@ -932,6 +932,8 @@ void SignalProxy::setInitData(SyncableObject *obj, const QVariantMap &properties void SignalProxy::sendHeartBeat() { QVariantList heartBeatParams; heartBeatParams << QTime::currentTime(); + QList toClose; + PeerHash::iterator peer = _peers.begin(); while(peer != _peers.end()) { if((*peer)->type() == AbstractPeer::IODevicePeer) { @@ -940,15 +942,18 @@ void SignalProxy::sendHeartBeat() { if(ioPeer->sentHeartBeats > 0) { updateLag(ioPeer, ioPeer->sentHeartBeats * _heartBeatTimer.interval()); } - if(ioPeer->sentHeartBeats > 1) { - qWarning() << "SignalProxy: Disconnecting peer:" << ioPeer->address() - << "(didn't receive a heartbeat for over" << ioPeer->sentHeartBeats * _heartBeatTimer.interval() / 1000 << "seconds)"; - ioPeer->close(); - } else { + if(ioPeer->sentHeartBeats > 1) + toClose.append(ioPeer); + else ioPeer->sentHeartBeats++; - } } - peer++; + ++peer; + } + + foreach(IODevicePeer *ioPeer, toClose) { + qWarning() << "SignalProxy: Disconnecting peer:" << ioPeer->address() + << "(didn't receive a heartbeat for over" << ioPeer->sentHeartBeats * _heartBeatTimer.interval() / 1000 << "seconds)"; + ioPeer->close(); } }