fix: set ndots correctly

fixes https://github.com/mr-karan/doggo/issues/13
pull/14/head v0.2.3
Karan Sharma 2021-02-15 10:11:08 +05:30
parent bec7a7f75b
commit a8769e1df5
2 changed files with 11 additions and 3 deletions

View File

@ -42,7 +42,7 @@ func main() {
// Resolver Options // Resolver Options
f.Int("timeout", 5, "Sets the timeout for a query to T seconds. The default timeout is 5 seconds.") f.Int("timeout", 5, "Sets the timeout for a query to T seconds. The default timeout is 5 seconds.")
f.Bool("search", true, "Use the search list provided in resolv.conf. It sets the `ndots` parameter as well unless overridden by `ndots` flag.") f.Bool("search", true, "Use the search list provided in resolv.conf. It sets the `ndots` parameter as well unless overridden by `ndots` flag.")
f.Int("ndots", 0, "Specify the ndots parameter. Default value is taken from resolv.conf and fallbacks to 1 if ndots statement is missing in resolv.conf") f.Int("ndots", -1, "Specify the ndots parameter. Default value is taken from resolv.conf and fallbacks to 1 if ndots statement is missing in resolv.conf")
f.BoolP("ipv4", "4", false, "Use IPv4 only") f.BoolP("ipv4", "4", false, "Use IPv4 only")
f.BoolP("ipv6", "6", false, "Use IPv6 only") f.BoolP("ipv6", "6", false, "Use IPv6 only")

View File

@ -35,6 +35,8 @@ func (hub *Hub) loadNameservers() error {
} }
} }
// Set `ndots` to the user specified value.
hub.ResolverOpts.Ndots = hub.QueryFlags.Ndots
// fallback to system nameserver // fallback to system nameserver
// in case no nameserver is specified by user. // in case no nameserver is specified by user.
if len(hub.Nameservers) == 0 { if len(hub.Nameservers) == 0 {
@ -42,8 +44,9 @@ func (hub *Hub) loadNameservers() error {
if err != nil { if err != nil {
return fmt.Errorf("error fetching system default nameserver") return fmt.Errorf("error fetching system default nameserver")
} }
// override if user hasn't specified any value. // `-1` indicates the flag is not set.
if hub.QueryFlags.Ndots == 0 { // use from config if user hasn't specified any value.
if hub.ResolverOpts.Ndots == -1 {
hub.ResolverOpts.Ndots = ndots hub.ResolverOpts.Ndots = ndots
} }
if len(search) > 0 && hub.QueryFlags.UseSearchList { if len(search) > 0 && hub.QueryFlags.UseSearchList {
@ -51,6 +54,11 @@ func (hub *Hub) loadNameservers() error {
} }
hub.Nameservers = append(hub.Nameservers, ns...) hub.Nameservers = append(hub.Nameservers, ns...)
} }
// if the user hasn't given any override of `ndots` AND has
// given a custom nameserver. Set `ndots` to 1 as the fallback value
if hub.ResolverOpts.Ndots == -1 {
hub.ResolverOpts.Ndots = 1
}
return nil return nil
} }