Repair stale respones for DoH

This commit is contained in:
Frank Denis 2021-09-25 19:53:43 +02:00
parent e5608e08cf
commit d82021b545

View file

@ -573,6 +573,7 @@ func (proxy *Proxy) clientsCountDec() {
}
func (proxy *Proxy) processIncomingQuery(clientProto string, serverProto string, query []byte, clientAddr *net.Addr, clientPc net.Conn, start time.Time, onlyCached bool) (response []byte) {
response = nil
if len(query) < MinDNSPacketSize {
return
}
@ -668,11 +669,12 @@ func (proxy *Proxy) processIncomingQuery(clientProto string, serverProto string,
serverInfo.noticeBegin(proxy)
serverResponse, _, tls, _, err := proxy.xTransport.DoHQuery(serverInfo.useGet, serverInfo.URL, query, proxy.timeout)
SetTransactionID(query, tid)
if err == nil || tls == nil || !tls.HandshakeComplete {
response = nil
} else if stale, ok := pluginsState.sessionData["stale"]; ok {
dlog.Debug("Serving stale response")
response, err = (stale.(*dns.Msg)).Pack()
if err != nil || tls == nil || !tls.HandshakeComplete {
if stale, ok := pluginsState.sessionData["stale"]; ok {
dlog.Debug("Serving stale response")
response, err = (stale.(*dns.Msg)).Pack()
}
}
if err != nil {
pluginsState.returnCode = PluginsReturnCodeNetworkError