From e5d9f8594d33b58a8f00a3c4c93aff2293a238de Mon Sep 17 00:00:00 2001 From: Mygod Date: Sun, 10 May 2020 04:24:03 +0800 Subject: [PATCH] Check for DNS RD bit --- src/relay/dnsrelay/mod.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/relay/dnsrelay/mod.rs b/src/relay/dnsrelay/mod.rs index 69dc3281..0ab32438 100644 --- a/src/relay/dnsrelay/mod.rs +++ b/src/relay/dnsrelay/mod.rs @@ -258,9 +258,10 @@ pub async fn run(context: SharedContext) -> io::Result<()> { message.set_recursion_available(true); message.set_message_type(MessageType::Response); - if request.queries().is_empty() { - message.set_response_code(ResponseCode::FormErr); - } else { + if !request.recursion_desired() { + message.set_recursion_desired(false); + message.set_response_code(ResponseCode::NotImp); + } else if request.query_count() > 0 { let question = &request.queries()[0]; let (r, forward) = acl_lookup(context.acl(), local_upstream, remote_upstream, question).await;