summaryrefslogtreecommitdiff
path: root/internal/server/doh.go
diff options
context:
space:
mode:
authorradhitya <alif@radhitya.org>2026-06-18 12:42:29 +0700
committerradhitya <alif@radhitya.org>2026-06-18 12:42:29 +0700
commitf5753c6a8cac5a57a042b0388f38abeff5d1f37d (patch)
tree96e1241126b23051725edb68a79c8e4603d7e23a /internal/server/doh.go
parente05835493f821055e517a3988c6f9256abbc5c24 (diff)
migration to new dns library
Diffstat (limited to 'internal/server/doh.go')
-rw-r--r--internal/server/doh.go14
1 files changed, 7 insertions, 7 deletions
diff --git a/internal/server/doh.go b/internal/server/doh.go
index b46736e..2f9dfc0 100644
--- a/internal/server/doh.go
+++ b/internal/server/doh.go
@@ -2,7 +2,7 @@ package server
import (
"encoding/base64"
- "github.com/miekg/dns"
+ "codeberg.org/miekg/dns"
"io"
"log/slog"
"net/http"
@@ -42,7 +42,8 @@ func (s *Server) dohHandler(w http.ResponseWriter, r *http.Request) {
}
msg := new(dns.Msg)
- if err := msg.Unpack(raw); err != nil {
+ msg.Data = raw
+ if err := msg.Unpack(); err != nil {
http.Error(w, "invalid dns message", http.StatusBadRequest)
return
}
@@ -53,22 +54,21 @@ func (s *Server) dohHandler(w http.ResponseWriter, r *http.Request) {
}
resp, _ := s.buildResponse(msg)
- packed, err := resp.Pack()
- if err != nil {
+ if err := resp.Pack(); err != nil {
http.Error(w, "pack response", http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/dns-message")
w.Header().Set("Cache-Control", "no-cache, max-age=0")
- if _, err := w.Write(packed); err != nil {
+ if _, err := w.Write(resp.Data); err != nil {
slog.Error("doh write failed", "err", err)
return
}
slog.Info("doh query served",
- "qname", msg.Question[0].Name,
- "qtype", dns.TypeToString[msg.Question[0].Qtype],
+ "qname", msg.Question[0].Header().Name,
+ "qtype", dns.TypeToString[dns.RRToType(msg.Question[0])],
"rcode", dns.RcodeToString[resp.Rcode],
"client", r.RemoteAddr,
)