Skip to content

Commit

Permalink
Respect timeout option when using DNS over HTTPS (DOH)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gia. Bui Dai committed Jan 18, 2022
1 parent 84b9e42 commit 177540b
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 8 deletions.
17 changes: 12 additions & 5 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/projectdiscovery/iputil"
"github.com/projectdiscovery/retryabledns/doh"
"github.com/projectdiscovery/retryabledns/hostsfile"
"github.com/projectdiscovery/retryablehttp-go"
)

func init() {
Expand Down Expand Up @@ -47,12 +48,18 @@ func NewWithOptions(options Options) *Client {
if options.Hostsfile {
knownHosts, _ = hostsfile.ParseDefault()
}
httpOptions := retryablehttp.DefaultOptionsSingle
httpOptions.Timeout = options.Timeout
client := Client{
options: options,
resolvers: parsedBaseResolvers,
udpClient: &dns.Client{Net: "", Timeout: options.Timeout},
tcpClient: &dns.Client{Net: TCP.String(), Timeout: options.Timeout},
dohClient: doh.New(),
options: options,
resolvers: parsedBaseResolvers,
udpClient: &dns.Client{Net: "", Timeout: options.Timeout},
tcpClient: &dns.Client{Net: TCP.String(), Timeout: options.Timeout},
dohClient: doh.NewWithOptions(
doh.Options{
HttpClient: retryablehttp.NewClient(httpOptions),
},
),
dotClient: &dns.Client{Net: "tcp-tls", Timeout: options.Timeout},
knownHosts: knownHosts,
}
Expand Down
4 changes: 2 additions & 2 deletions doh/doh_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ type Client struct {
}

func NewWithOptions(options Options) *Client {
return &Client{DefaultResolver: options.DefaultResolver, httpClient: options.httpClient}
return &Client{DefaultResolver: options.DefaultResolver, httpClient: options.HttpClient}
}

func New() *Client {
return NewWithOptions(Options{DefaultResolver: Cloudflare, httpClient: retryablehttp.NewClient(retryablehttp.DefaultOptionsSingle)})
return NewWithOptions(Options{DefaultResolver: Cloudflare, HttpClient: retryablehttp.NewClient(retryablehttp.DefaultOptionsSingle)})
}

func (c *Client) Query(name string, question QuestionType) (*Response, error) {
Expand Down
2 changes: 1 addition & 1 deletion doh/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (

type Options struct {
DefaultResolver Resolver
httpClient *retryablehttp.Client
HttpClient *retryablehttp.Client
}

type Resolver struct {
Expand Down

0 comments on commit 177540b

Please sign in to comment.