@@ -15,8 +15,10 @@ type localDoHHandler struct {
1515
1616func (handler localDoHHandler ) ServeHTTP (writer http.ResponseWriter , request * http.Request ) {
1717 dataType := "application/dns-message"
18+ writer .Header ().Set ("Server" , "dnscrypt-proxy" )
1819 if request .Header .Get ("Content-Type" ) != dataType {
1920 writer .WriteHeader (400 )
21+ writer .Write ([]byte ("Unexpected Content-Type\n " ))
2022 return
2123 }
2224 proxy := handler .proxy
@@ -32,14 +34,14 @@ func (handler localDoHHandler) ServeHTTP(writer http.ResponseWriter, request *ht
3234 dlog .Warnf ("No body in a local DoH query" )
3335 return
3436 }
35- response := proxy .processIncomingQuery (proxy .serversInfo .getOne (), "tcp " , "tcp" , packet , & xClientAddr , nil , start )
37+ response := proxy .processIncomingQuery (proxy .serversInfo .getOne (), "http " , proxy . mainProto , packet , & xClientAddr , nil , start )
3638 if len (response ) == 0 {
3739 writer .WriteHeader (500 )
3840 return
3941 }
42+ writer .Header ().Set ("Content-Type" , "application/dns-message" )
43+ writer .Header ().Set ("Content-Length" , string (len (response )))
4044 writer .WriteHeader (200 )
41- writer .Header ().Add ("Server" , "dnscrypt-proxy" )
42- writer .Header ().Add ("Content-Type" , "application/dns-message" )
4345 writer .Write (response )
4446}
4547
@@ -50,7 +52,7 @@ func (proxy *Proxy) localDoHListener(acceptPc *net.TCPListener) {
5052 WriteTimeout : proxy .timeout ,
5153 Handler : localDoHHandler {proxy : proxy },
5254 }
53- if err := httpServer .Serve (acceptPc ); err != nil {
55+ if err := httpServer .ServeTLS (acceptPc , proxy . localDoHCertFile , proxy . localDoHCertKeyFile ); err != nil {
5456 dlog .Fatal (err )
5557 }
5658}
0 commit comments