aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/dnsserver/server_https.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/dnsserver/server_https.go b/core/dnsserver/server_https.go
index 1e184e044..6ae6ce6a6 100644
--- a/core/dnsserver/server_https.go
+++ b/core/dnsserver/server_https.go
@@ -119,6 +119,14 @@ func (s *ServerHTTPS) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// We should expect a packet to be returned that we can send to the client.
s.ServeDNS(context.Background(), dw, msg)
+ // See section 4.2.1 of RFC 8484.
+ // We are using code 500 to indicate an unexpected situation when the chain
+ // handler has not provided any response message.
+ if dw.Msg == nil {
+ http.Error(w, "No response", http.StatusInternalServerError)
+ return
+ }
+
buf, _ := dw.Msg.Pack()
mt, _ := response.Typify(dw.Msg, time.Now().UTC())