From daa1f3d3b1df53c600b274face546a2b0e9fa59c Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 3 Jan 2021 18:09:03 +0100 Subject: [PATCH] Add a NOT_READY return code --- dnscrypt-proxy/plugins.go | 2 ++ dnscrypt-proxy/proxy.go | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dnscrypt-proxy/plugins.go b/dnscrypt-proxy/plugins.go index cf2d768c..517ecb4d 100644 --- a/dnscrypt-proxy/plugins.go +++ b/dnscrypt-proxy/plugins.go @@ -46,6 +46,7 @@ const ( PluginsReturnCodeNetworkError PluginsReturnCodeCloak PluginsReturnCodeServerTimeout + PluginsReturnCodeNotReady ) var PluginsReturnCodeToString = map[PluginsReturnCode]string{ @@ -61,6 +62,7 @@ var PluginsReturnCodeToString = map[PluginsReturnCode]string{ PluginsReturnCodeNetworkError: "NETWORK_ERROR", PluginsReturnCodeCloak: "CLOAK", PluginsReturnCodeServerTimeout: "SERVER_TIMEOUT", + PluginsReturnCodeNotReady: "NOT_READY", } type PluginsState struct { diff --git a/dnscrypt-proxy/proxy.go b/dnscrypt-proxy/proxy.go index 03ccd040..989b25f5 100644 --- a/dnscrypt-proxy/proxy.go +++ b/dnscrypt-proxy/proxy.go @@ -716,7 +716,11 @@ func (proxy *Proxy) processIncomingQuery(clientProto string, serverProto string, } } if len(response) < MinDNSPacketSize || len(response) > MaxDNSPacketSize { - pluginsState.returnCode = PluginsReturnCodeParseError + if len(response) == 0 { + pluginsState.returnCode = PluginsReturnCodeNotReady + } else { + pluginsState.returnCode = PluginsReturnCodeParseError + } pluginsState.ApplyLoggingPlugins(&proxy.pluginsGlobals) if serverInfo != nil { serverInfo.noticeFailure(proxy)