summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dns.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/dns.cpp b/src/dns.cpp
index d295aabf0..e75f98449 100644
--- a/src/dns.cpp
+++ b/src/dns.cpp
@@ -535,11 +535,12 @@ bool Manager::TCPSocket::Client::ProcessRead()
length += i;
- short want_len = packet_buffer[0] << 8 | packet_buffer[1];
- if (length >= want_len - 2)
+ unsigned short want_len = packet_buffer[0] << 8 | packet_buffer[1];
+ if (length >= want_len + 2)
{
- SocketEngine::Change(this, false, SF_READABLE);
- return DNS::Engine->HandlePacket(this, packet_buffer + 2, length - 2, NULL);
+ int len = length - 2;
+ length -= want_len + 2;
+ return DNS::Engine->HandlePacket(this, packet_buffer + 2, len, NULL);
}
return true;
}