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)