diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 35 |
1 files changed, 22 insertions, 13 deletions
@@ -45,10 +45,19 @@ func main() { logger.Info("config loaded", "file", flags.Config) - r := resolver.New( - resolver.WithTimeout(2 * time.Second), - ) - + var ropts []resolver.Option + if cfg.Resolver.Mode == "forward" && len(cfg.Resolver.Forwarders) > 0 { + ropts = append(ropts, resolver.WithForwarders(cfg.Resolver.Forwarders)) + logger.Info("resolver mode: forward", "upstreams", cfg.Resolver.Forwarders) + } else { + logger.Info("resolver mode: recursive (root hints)") + } + if dur, err := time.ParseDuration(cfg.Resolver.Timeout); err == nil { + ropts = append(ropts, resolver.WithTimeout(dur)) + } else { + ropts = append(ropts, resolver.WithTimeout(2*time.Second)) + } + r := resolver.New(ropts...) c, err := cache.NewCache(cfg.Cache.MaxEntries, cfg.Cache.DBPath) if err != nil { logger.Error("create cache failed", "err", err) @@ -100,14 +109,14 @@ func main() { defer srv.Close() logger.Info("linum starting", - "udp", cfg.Server.ListenUDP, - "tcp", cfg.Server.ListenTCP, - "doh", cfg.Server.ListenDOH, - ) + "udp", cfg.Server.ListenUDP, + "tcp", cfg.Server.ListenTCP, + "doh", cfg.Server.ListenDOH, +) - if err := srv.Run(ctx); err != nil && err != context.Canceled { - logger.Error("server stopped with error", "err", err) - os.Exit(1) - } - logger.Info("linum stopped cleanly") +if err := srv.Run(ctx); err != nil && err != context.Canceled { + logger.Error("server stopped with error", "err", err) + os.Exit(1) +} +logger.Info("linum stopped cleanly") } |
