diff options
-rw-r--r-- | src/dns.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/dns.cpp b/src/dns.cpp index f9873f3e6..0cfe047b0 100644 --- a/src/dns.cpp +++ b/src/dns.cpp @@ -491,20 +491,20 @@ bool DNSManager::ProcessWrite() { Log(LOG_DEBUG_2) << "Resolver: Writing to DNS socket"; - for (unsigned i = DNSEngine->packets.size(); i > 0; --i) + DNSPacket *r = DNSEngine->packets.size() ? DNSEngine->packets[0] : NULL; + if (r != NULL) { - DNSPacket *r = DNSEngine->packets[i - 1]; - unsigned char buffer[524]; r->FillBuffer(buffer); sendto(this->GetFD(), buffer, r->payload_count + 12, 0, &this->addrs.sa, this->addrs.size()); delete r; + DNSEngine->packets.erase(DNSEngine->packets.begin()); } - DNSEngine->packets.clear(); - SocketEngine::ClearWritable(this); + if (DNSEngine->packets.empty()) + SocketEngine::ClearWritable(this); return true; } |