diff --git a/log.go b/log.go index c521163..14c82e8 100644 --- a/log.go +++ b/log.go @@ -9,11 +9,6 @@ import ( "github.com/rs/zerolog" ) -func init() { - l := zerolog.New(io.Discard) - ProxyLogger.Store(&l) -} - // ProxyLog emits the log record for proxy operations. // The caller should set it only once. // DEPRECATED: use ProxyLogger instead. diff --git a/nameservers_windows.go b/nameservers_windows.go index 36d67fa..0c47e58 100644 --- a/nameservers_windows.go +++ b/nameservers_windows.go @@ -17,7 +17,6 @@ import ( "github.com/microsoft/wmi/pkg/base/query" "github.com/microsoft/wmi/pkg/constant" "github.com/microsoft/wmi/pkg/hardware/network/netadapter" - "github.com/rs/zerolog" "golang.org/x/sys/windows" "golang.zx2c4.com/wireguard/windows/tunnel/winipcfg" "tailscale.com/net/netmon" @@ -63,10 +62,7 @@ func dnsFromAdapter() []string { var ns []string var err error - logger := zerolog.New(io.Discard) - if ProxyLogger.Load() != nil { - logger = *ProxyLogger.Load() - } + logger := *ProxyLogger.Load() for i := 0; i < maxDNSAdapterRetries; i++ { if ctx.Err() != nil { @@ -112,10 +108,8 @@ func dnsFromAdapter() []string { } func getDNSServers(ctx context.Context) ([]string, error) { - logger := zerolog.New(io.Discard) - if ProxyLogger.Load() != nil { - logger = *ProxyLogger.Load() - } + logger := *ProxyLogger.Load() + // Check context before making the call if ctx.Err() != nil { return nil, ctx.Err() @@ -343,10 +337,8 @@ func nameserversFromResolvconf() []string { // checkDomainJoined checks if the machine is joined to an Active Directory domain // Returns whether it's domain joined and the domain name if available func checkDomainJoined() bool { - logger := zerolog.New(io.Discard) - if ProxyLogger.Load() != nil { - logger = *ProxyLogger.Load() - } + logger := *ProxyLogger.Load() + var domain *uint16 var status uint32 @@ -423,10 +415,7 @@ func validInterfaces() map[string]struct{} { defer log.SetOutput(os.Stderr) //load the logger - logger := zerolog.New(io.Discard) - if ProxyLogger.Load() != nil { - logger = *ProxyLogger.Load() - } + logger := *ProxyLogger.Load() whost := host.NewWmiLocalHost() q := query.NewWmiQuery("MSFT_NetAdapter") diff --git a/resolver.go b/resolver.go index df823fc..3c6a0a7 100644 --- a/resolver.go +++ b/resolver.go @@ -48,7 +48,15 @@ const ( var controldPublicDnsWithPort = net.JoinHostPort(controldPublicDns, "53") -var localResolver = newLocalResolver() +var localResolver Resolver + +func init() { + // Initializing ProxyLogger here, so other places don't have to do nil check. + l := zerolog.New(io.Discard) + ProxyLogger.Store(&l) + + localResolver = newLocalResolver() +} var ( resolverMutex sync.Mutex @@ -91,10 +99,8 @@ func availableNameservers() []string { machineIPsMap := make(map[string]struct{}, len(regularIPs)) //load the logger - logger := zerolog.New(io.Discard) - if ProxyLogger.Load() != nil { - logger = *ProxyLogger.Load() - } + logger := *ProxyLogger.Load() + Log(context.Background(), logger.Debug(), "Got local addresses - regular IPs: %v, loopback IPs: %v", regularIPs, loopbackIPs) @@ -549,10 +555,8 @@ func lookupIP(domain string, timeout int, withBootstrapDNS bool) (ips []string) // - Gateway IP address (depends on OS). // - Input servers. func NewBootstrapResolver(servers ...string) Resolver { - logger := zerolog.New(io.Discard) - if ProxyLogger.Load() != nil { - logger = *ProxyLogger.Load() - } + logger := *ProxyLogger.Load() + Log(context.Background(), logger.Debug(), "NewBootstrapResolver called with servers: %v", servers) nss := defaultNameservers() nss = append([]string{controldPublicDnsWithPort}, nss...) @@ -571,10 +575,8 @@ func NewBootstrapResolver(servers ...string) Resolver { // This is useful for doing PTR lookup in LAN network. func NewPrivateResolver() Resolver { - logger := zerolog.New(io.Discard) - if ProxyLogger.Load() != nil { - logger = *ProxyLogger.Load() - } + logger := *ProxyLogger.Load() + Log(context.Background(), logger.Debug(), "NewPrivateResolver called") nss := defaultNameservers() @@ -621,10 +623,8 @@ func NewResolverWithNameserver(nameservers []string) Resolver { // newResolverWithNameserver returns an OS resolver from given nameservers list. // The caller must ensure each server in list is formed "ip:53". func newResolverWithNameserver(nameservers []string) *osResolver { - logger := zerolog.New(io.Discard) - if ProxyLogger.Load() != nil { - logger = *ProxyLogger.Load() - } + logger := *ProxyLogger.Load() + Log(context.Background(), logger.Debug(), "newResolverWithNameserver called with nameservers: %v", nameservers) r := &osResolver{} var publicNss []string