From 9cefd598107fcb5dfe6cd100524ab016eae0dca0 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Fri, 24 Jan 2014 23:58:51 +0100 Subject: [PATCH 1/1] DataStreamPeer: Send QDateTime instead of QTime in heartbeat messages This allows the lag detection to work correctly even during a day change. --- .../protocols/datastream/datastreampeer.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/common/protocols/datastream/datastreampeer.cpp b/src/common/protocols/datastream/datastreampeer.cpp index acd0bc41..a14af642 100644 --- a/src/common/protocols/datastream/datastreampeer.cpp +++ b/src/common/protocols/datastream/datastreampeer.cpp @@ -361,11 +361,8 @@ void DataStreamPeer::handlePackedFunc(const QVariant &packedFunc) qWarning() << Q_FUNC_INFO << "Received invalid HeartBeat:" << params; return; } - // The legacy protocol would only send a QTime, no QDateTime - // so we assume it's sent today, which works in exactly the same cases as it did in the old implementation - QDateTime dateTime = QDateTime::currentDateTime().toUTC(); - dateTime.setTime(params[0].toTime()); - handle(Protocol::HeartBeat(dateTime)); + // Note: QDateTime instead of QTime as in the legacy protocol! + handle(Protocol::HeartBeat(params[0].toDateTime())); break; } case HeartBeatReply: { @@ -373,11 +370,8 @@ void DataStreamPeer::handlePackedFunc(const QVariant &packedFunc) qWarning() << Q_FUNC_INFO << "Received invalid HeartBeat:" << params; return; } - // The legacy protocol would only send a QTime, no QDateTime - // so we assume it's sent today, which works in exactly the same cases as it did in the old implementation - QDateTime dateTime = QDateTime::currentDateTime().toUTC(); - dateTime.setTime(params[0].toTime()); - handle(Protocol::HeartBeatReply(dateTime)); + // Note: QDateTime instead of QTime as in the legacy protocol! + handle(Protocol::HeartBeatReply(params[0].toDateTime())); break; } @@ -411,13 +405,13 @@ void DataStreamPeer::dispatch(const Protocol::InitData &msg) void DataStreamPeer::dispatch(const Protocol::HeartBeat &msg) { - dispatchPackedFunc(QVariantList() << (qint16)HeartBeat << msg.timestamp.time()); + dispatchPackedFunc(QVariantList() << (qint16)HeartBeat << msg.timestamp); } void DataStreamPeer::dispatch(const Protocol::HeartBeatReply &msg) { - dispatchPackedFunc(QVariantList() << (qint16)HeartBeatReply << msg.timestamp.time()); + dispatchPackedFunc(QVariantList() << (qint16)HeartBeatReply << msg.timestamp); } -- 2.20.1