mirror of
https://github.com/m13253/dns-over-https.git
synced 2026-08-28 19:48:22 +00:00
Update to IETF draft-06
This commit is contained in:
+2
-2
@@ -45,7 +45,7 @@ func (s *Server) parseRequestIETF(w http.ResponseWriter, r *http.Request) *DNSRe
|
||||
errtext: fmt.Sprintf("Invalid argument value: \"dns\" = %q", requestBase64),
|
||||
}
|
||||
}
|
||||
if len(requestBinary) == 0 && r.Header.Get("Content-Type") == "application/dns-udpwireformat" {
|
||||
if len(requestBinary) == 0 && (r.Header.Get("Content-Type") == "message/dns" || r.Header.Get("Content-Type") == "application/dns-udpwireformat") {
|
||||
requestBinary, err = ioutil.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
return &DNSRequest{
|
||||
@@ -144,7 +144,7 @@ func (s *Server) generateResponseIETF(w http.ResponseWriter, r *http.Request, re
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/dns-udpwireformat")
|
||||
w.Header().Set("Content-Type", "message/dns")
|
||||
now := time.Now().UTC().Format(http.TimeFormat)
|
||||
w.Header().Set("Date", now)
|
||||
w.Header().Set("Last-Modified", now)
|
||||
|
||||
+12
-5
@@ -98,17 +98,20 @@ func (s *Server) handlerFunc(w http.ResponseWriter, r *http.Request) {
|
||||
if r.FormValue("name") != "" {
|
||||
contentType = "application/dns-json"
|
||||
} else if r.FormValue("dns") != "" {
|
||||
contentType = "application/dns-udpwireformat"
|
||||
contentType = "message/dns"
|
||||
}
|
||||
}
|
||||
var responseType string
|
||||
for _, responseCandidate := range strings.Split(r.Header.Get("Accept"), ",") {
|
||||
responseCandidate = strings.ToLower(strings.SplitN(responseCandidate, ";", 2)[0])
|
||||
responseCandidate = strings.SplitN(responseCandidate, ";", 2)[0]
|
||||
if responseCandidate == "application/json" {
|
||||
responseType = "application/json"
|
||||
break
|
||||
} else if responseCandidate == "application/dns-udpwireformat" {
|
||||
responseType = "application/dns-udpwireformat"
|
||||
responseType = "message/dns"
|
||||
break
|
||||
} else if responseCandidate == "message/dns" {
|
||||
responseType = "message/dns"
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -116,14 +119,18 @@ func (s *Server) handlerFunc(w http.ResponseWriter, r *http.Request) {
|
||||
// Guess response Content-Type based on request Content-Type
|
||||
if contentType == "application/dns-json" {
|
||||
responseType = "application/json"
|
||||
} else if contentType == "message/dns" {
|
||||
responseType = "message/dns"
|
||||
} else if contentType == "application/dns-udpwireformat" {
|
||||
responseType = "application/dns-udpwireformat"
|
||||
responseType = "message/dns"
|
||||
}
|
||||
}
|
||||
|
||||
var req *DNSRequest
|
||||
if contentType == "application/dns-json" {
|
||||
req = s.parseRequestGoogle(w, r)
|
||||
} else if contentType == "message/dns" {
|
||||
req = s.parseRequestIETF(w, r)
|
||||
} else if contentType == "application/dns-udpwireformat" {
|
||||
req = s.parseRequestIETF(w, r)
|
||||
} else {
|
||||
@@ -144,7 +151,7 @@ func (s *Server) handlerFunc(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
if responseType == "application/json" {
|
||||
s.generateResponseGoogle(w, r, req)
|
||||
} else if responseType == "application/dns-udpwireformat" {
|
||||
} else if responseType == "message/dns" {
|
||||
s.generateResponseIETF(w, r, req)
|
||||
} else {
|
||||
panic("Unknown response Content-Type")
|
||||
|
||||
Reference in New Issue
Block a user