From 968ce9af598024ec71e9ffb2d15c3997a13ad754 Mon Sep 17 00:00:00 2001 From: you Date: Sat, 23 Jun 2018 09:16:01 +0200 Subject: RTT fixes (#7428) * Few code updates * Do not show average RTT before timing out * Fix unwanted integer division in RTTStatistics * Fix float format, prettier jitter calculation * Use +=, 0.1f -> 100.0f for stronger average updates --- src/client.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/client.cpp') diff --git a/src/client.cpp b/src/client.cpp index 18e43b1b6..09c67c268 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -437,7 +437,7 @@ void Client::step(float dtime) counter = 0.0; // connectedAndInitialized() is true, peer exists. float avg_rtt = getRTT(); - infostream << "Client: avg_rtt=" << avg_rtt << std::endl; + infostream << "Client: average rtt: " << avg_rtt << std::endl; } /* @@ -1706,9 +1706,17 @@ void Client::afterContentReceived() delete[] text; } +// returns the Round Trip Time +// if the RTT did not become updated within 2 seconds, e.g. before timing out, +// it returns the expired time instead float Client::getRTT() { - return m_con->getPeerStat(PEER_ID_SERVER,con::AVG_RTT); + float avg_rtt = m_con->getPeerStat(PEER_ID_SERVER, con::AVG_RTT); + float time_from_last_rtt = + m_con->getPeerStat(PEER_ID_SERVER, con::TIMEOUT_COUNTER); + if (avg_rtt + 2.0f > time_from_last_rtt) + return avg_rtt; + return time_from_last_rtt; } float Client::getCurRate() -- cgit v1.2.3