From 61f0043cd83baa68e00b3207a45f266777f0cc55 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 16 Jul 2024 15:05:07 +0300 Subject: [PATCH] resolver: Fix infinite debug printing loop, if client disconnects --- userspace/programs/resolver/main.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/userspace/programs/resolver/main.cpp b/userspace/programs/resolver/main.cpp index ff97962c..752dabb3 100644 --- a/userspace/programs/resolver/main.cpp +++ b/userspace/programs/resolver/main.cpp @@ -286,13 +286,23 @@ int main(int, char**) if (!client.query.empty()) { - dprintln("Client already has a query"); + static uint8_t buffer[4096]; + ssize_t nrecv = recv(client.socket, buffer, sizeof(buffer), 0); + if (nrecv < 0) + dprintln("{}", strerror(errno)); + if (nrecv <= 0) + client.close = true; + else + dprintln("Client already has a query"); continue; } auto query = read_service_query(client.socket); if (!query.has_value()) + { + client.close = true; continue; + } BAN::Optional result;