From 953dc1ee667d747add03a7eb038c9805b18a9478 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Fri, 3 Mar 2023 14:04:16 +0100 Subject: [PATCH] dnsdist: Fall-back to non-XSK for too large responses --- pdns/dnsdist.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index 304cd0f99b..82ea4fc849 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -880,10 +880,20 @@ void responderThread(std::shared_ptr dss) return; } auto response = packet->clonePacketBuffer(); + if (response.size() > packet->capacity()) { + /* fallback to sending the packet via normal socket */ + ids->xskPacketHeader.reset(); + } if (!processResponderPacket(dss, response, *localRespRuleActions, *localCacheInsertedRespRuleActions, std::move(*ids))) { xskInfo->sq.push(packet); return; } + if (response.size() > packet->capacity()) { + /* fallback to sending the packet via normal socket */ + sendUDPResponse(ids->cs->udpFD, response, ids->delayMsec, ids->hopLocal, ids->hopRemote); + xskInfo->sq.push(packet); + return; + } packet->setHeader(*ids->xskPacketHeader); packet->setPayload(response); if (ids->delayMsec > 0) { -- 2.47.2