From 8950aeda9a42ec795ce4edf87b40135047f55f6d Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Tue, 21 Apr 2015 15:00:01 +0200 Subject: core_dns Allow usage of id 0 --- src/coremods/core_dns.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/coremods/core_dns.cpp b/src/coremods/core_dns.cpp index 61d524ada..f4559c08f 100644 --- a/src/coremods/core_dns.cpp +++ b/src/coremods/core_dns.cpp @@ -473,32 +473,34 @@ class MyManager : public Manager, public Timer, public EventHandler /* Create an id */ unsigned int tries = 0; + int id; do { - req->id = ServerInstance->GenRandomInt(DNS::MAX_REQUEST_ID); + id = ServerInstance->GenRandomInt(DNS::MAX_REQUEST_ID); if (++tries == DNS::MAX_REQUEST_ID*5) { // If we couldn't find an empty slot this many times, do a sequential scan as a last // resort. If an empty slot is found that way, go on, otherwise throw an exception - req->id = 0; - for (int i = 1; i < DNS::MAX_REQUEST_ID; i++) + id = -1; + for (unsigned int i = 0; i < DNS::MAX_REQUEST_ID; i++) { if (!this->requests[i]) { - req->id = i; + id = i; break; } } - if (req->id == 0) + if (id == -1) throw Exception("DNS: All ids are in use"); break; } } - while (!req->id || this->requests[req->id]); + while (this->requests[id]); + req->id = id; this->requests[req->id] = req; Packet p; -- cgit v1.2.3