diff --git a/pkg/resolvers/doh.go b/pkg/resolvers/doh.go index 3b81b44..c5a0016 100644 --- a/pkg/resolvers/doh.go +++ b/pkg/resolvers/doh.go @@ -2,6 +2,7 @@ package resolvers import ( "bytes" + "encoding/base64" "fmt" "io/ioutil" "net/http" @@ -64,6 +65,17 @@ func (r *DOHResolver) Lookup(question dns.Question) (Response, error) { if err != nil { return rsp, err } + if resp.StatusCode == http.StatusMethodNotAllowed { + url, err := url.Parse(r.server) + if err != nil { + return rsp, err + } + url.RawQuery = fmt.Sprintf("dns=%v", base64.RawURLEncoding.EncodeToString(b)) + resp, err = r.client.Get(url.String()) + if err != nil { + return rsp, err + } + } if resp.StatusCode != http.StatusOK { return rsp, fmt.Errorf("error from nameserver %s", resp.Status) }