From 31c7f08e7cc46114d3fe740a07409d4c8bf5f094 Mon Sep 17 00:00:00 2001 From: "Srivats P." Date: Fri, 9 Mar 2012 22:15:06 +0530 Subject: [PATCH] Fixed Win32 QPC timestamp diff that caused extraordinarily large inter-packet timing --- server/pcapport.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/pcapport.cpp b/server/pcapport.cpp index 7dc6d48..5244956 100644 --- a/server/pcapport.cpp +++ b/server/pcapport.cpp @@ -59,7 +59,7 @@ static void inline getTimeStamp(TimeStamp* stamp) static long inline udiffTimeStamp(const TimeStamp *start, const TimeStamp *end) { - if (end->QuadPart > start->QuadPart) + if (end->QuadPart >= start->QuadPart) return (end->QuadPart - start->QuadPart)*long(1e6)/gTicksFreq; else { @@ -531,6 +531,7 @@ _restart: getTimeStamp(&ovrEnd); overHead += seq->usecDuration_ - udiffTimeStamp(&ovrStart, &ovrEnd); + Q_ASSERT(overHead <= 0); } if (stop_) ret = -2; @@ -614,6 +615,7 @@ int PcapPort::PortTransmitter::sendQueueTransmit(pcap_t *p, getTimeStamp(&ovrEnd); overHead -= udiffTimeStamp(&ovrStart, &ovrEnd); + Q_ASSERT(overHead <= 0); usec += overHead; if (usec > 0) {