DoH: Fixing panic in case if there's no response (#2577)

* Fixing panic in case if there's no response

There could be a situation when there's no response after ServeDNS call. With the current implementation, this leads to panic.

* Add comment
This commit is contained in:
Andrey Meshkov
2019-02-25 19:16:17 +03:00
committed by Miek Gieben
parent 47cce40d19
commit 2b6fb578c3

View File

@@ -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())