From a6823756f0024814a74e255f7584193c0cd77b43 Mon Sep 17 00:00:00 2001 From: radhitya Date: Wed, 24 Jun 2026 06:15:18 +0700 Subject: fix doh --- internal/server/doh.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'internal/server/doh.go') diff --git a/internal/server/doh.go b/internal/server/doh.go index 0feb094..9c04d2c 100644 --- a/internal/server/doh.go +++ b/internal/server/doh.go @@ -10,6 +10,13 @@ import ( "linum/internal/cache" ) +func decodeDNSParam(s string) ([]byte, error) { + if b, err := base64.RawURLEncoding.DecodeString(s); err == nil { + return b, nil + } + return base64.URLEncoding.DecodeString(s) +} + func (s *Server) dohHandler(w http.ResponseWriter, r *http.Request) { clientIP := parseHTTPClientIP(r.RemoteAddr) if !s.isAllowed(clientIP) { @@ -44,7 +51,7 @@ func (s *Server) dohHandler(w http.ResponseWriter, r *http.Request) { http.Error(w, "missing dns param", http.StatusBadRequest) return } - decoded, err := base64.RawURLEncoding.DecodeString(param) + decoded, err := decodeDNSParam(param) if err != nil { http.Error(w, "invalid base64url", http.StatusBadRequest) return -- cgit v1.2.3