From: Remi Gacogne Date: Wed, 27 Sep 2023 23:31:27 +0000 (+0200) Subject: dnsdist: Handle cross-protocol I/O errors for DoQ queries X-Git-Tag: rec-5.0.0-alpha2~6^2~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ef4350f8e4efecf3b054e3d3ff163da91fcffa0c;p=thirdparty%2Fpdns.git dnsdist: Handle cross-protocol I/O errors for DoQ queries --- diff --git a/pdns/dnsdistdist/doq.cc b/pdns/dnsdistdist/doq.cc index a90d90e5e1..894a99deda 100644 --- a/pdns/dnsdistdist/doq.cc +++ b/pdns/dnsdistdist/doq.cc @@ -193,8 +193,21 @@ public: return handleResponse(now, std::move(response)); } - void notifyIOError(const struct timeval& now, TCPResponse&& response) override + void notifyIOError([[maybe_unused]] const struct timeval& now, TCPResponse&& response) override { + if (!response.d_idstate.doqu) { + return; + } + + auto unit = std::move(response.d_idstate.doqu); + if (unit->dsc == nullptr) { + return; + } + + /* this will signal an error */ + unit->response.clear(); + unit->ids = std::move(response.d_idstate); + sendBackDOQUnit(std::move(unit), "Cross-protocol error"); } };