From 8aecec3ac418af4b2ad6bcf28fccbb80e46c75ee Mon Sep 17 00:00:00 2001 From: Dominik Durner Date: Mon, 25 Mar 2024 15:56:03 +0100 Subject: [PATCH] Fix throughput resolver shutdown --- src/network/throughput_resolver.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/network/throughput_resolver.cpp b/src/network/throughput_resolver.cpp index 08f7e1d..fc2376d 100644 --- a/src/network/throughput_resolver.cpp +++ b/src/network/throughput_resolver.cpp @@ -28,8 +28,7 @@ ThroughputResolver::ThroughputResolver(unsigned entries) : Resolver(entries), _t const addrinfo* ThroughputResolver::resolve(string hostname, string port, bool& reuse) // Resolve the request { - auto modulo = static_cast(_addrString.size() < 8 ? _addrString.size() : 8); - auto addrPos = _addrCtr % modulo; + auto addrPos = _addrCtr % _addrString.size(); auto curCtr = _addrString[addrPos].second--; auto hostString = hostname + ":" + port; if (_addrString[addrPos].first.compare(hostString) || curCtr == 0) { @@ -54,7 +53,7 @@ const addrinfo* ThroughputResolver::resolve(string hostname, string port, bool& void ThroughputResolver::startSocket(int fd) // Start a socket { - _fdMap.emplace(fd, make_pair(_addrCtr++, chrono::steady_clock::now())); + _fdMap.emplace(fd, make_pair(_addrCtr++ % _addrString.size(), chrono::steady_clock::now())); } //--------------------------------------------------------------------------- void ThroughputResolver::shutdownSocket(int fd) @@ -65,7 +64,7 @@ void ThroughputResolver::shutdownSocket(int fd) auto pos = it->second.first; auto& ip = _addr[pos]; for (auto compPos = 0u; compPos < _addr.size(); compPos++) { - if (!strncmp(ip->ai_addr->sa_data, _addr[compPos]->ai_addr->sa_data, 14)) { + if (_addr[compPos] && !strncmp(ip->ai_addr->sa_data, _addr[compPos]->ai_addr->sa_data, 14)) { _addrString[compPos].second = 0; } }