From: Kees Monshouwer Date: Tue, 24 Nov 2020 19:50:34 +0000 (+0100) Subject: auth: fix rounding inaccuracy in latency statistics X-Git-Tag: auth-4.3.2^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F9786%2Fhead;p=thirdparty%2Fpdns.git auth: fix rounding inaccuracy in latency statistics --- diff --git a/pdns/common_startup.cc b/pdns/common_startup.cc index da3c8e3371..47128e6d3a 100644 --- a/pdns/common_startup.cc +++ b/pdns/common_startup.cc @@ -56,7 +56,7 @@ std::unique_ptr DP{nullptr}; std::unique_ptr dl{nullptr}; CommunicatorClass Communicator; shared_ptr N; -int avg_latency; +double avg_latency{0.0}; unique_ptr TN; static vector g_distributors; vector > g_udpReceivers; @@ -287,7 +287,7 @@ catch(PDNSException& e) static uint64_t getLatency(const std::string& str) { - return avg_latency; + return round(avg_latency); } void declareStats(void) @@ -387,7 +387,7 @@ static void sendout(std::unique_ptr& a) N->send(*a); int diff=a->d_dt.udiff(); - avg_latency=(int)(0.999*avg_latency+0.001*diff); + avg_latency=0.999*avg_latency+0.001*diff; } //! The qthread receives questions over the internet via the Nameserver class, and hands them to the Distributor for further processing @@ -472,7 +472,7 @@ try cached.commitD(); // commit d to the packet inlined NS->send(cached); // answer it then inlined diff=question.d_dt.udiff(); - avg_latency=(int)(0.999*avg_latency+0.001*diff); // 'EWMA' + avg_latency=0.999*avg_latency+0.001*diff; // 'EWMA' continue; } } diff --git a/pdns/common_startup.hh b/pdns/common_startup.hh index 45c8045c0c..0515dd31d8 100644 --- a/pdns/common_startup.hh +++ b/pdns/common_startup.hh @@ -43,7 +43,7 @@ extern std::unique_ptr dl; extern CommunicatorClass Communicator; extern std::shared_ptr N; extern vector > g_udpReceivers; -extern int avg_latency; +extern double avg_latency; extern std::unique_ptr TN; extern ArgvMap & arg( void ); extern void declareArguments();