net/dnsfallback: more explicitly pass through logf function

Redoes the approach from #5550 and #7539 to explicitly pass in the logf
function, instead of having global state that can be overridden.

Signed-off-by: Mihai Parparita <mihai@tailscale.com>
This commit is contained in:
Mihai Parparita
2023-04-17 10:58:40 -07:00
committed by Mihai Parparita
parent 28cb1221ba
commit 9a655a1d58
8 changed files with 20 additions and 66 deletions

View File

@ -41,7 +41,6 @@ import (
"tailscale.com/logpolicy"
"tailscale.com/logtail"
"tailscale.com/logtail/filch"
"tailscale.com/net/dnsfallback"
"tailscale.com/net/memnet"
"tailscale.com/net/proxymux"
"tailscale.com/net/socks5"
@ -651,25 +650,6 @@ func (s *Server) logf(format string, a ...interface{}) {
log.Printf(format, a...)
}
// ReplaceGlobalLoggers will replace any Tailscale-specific package-global
// loggers with this Server's logger. It returns a function that, when called,
// will undo any changes made.
//
// Note that calling this function from multiple Servers will result in the
// last call taking all logs; logs are not duplicated.
func (s *Server) ReplaceGlobalLoggers() (undo func()) {
var undos []func()
oldDnsFallback := dnsfallback.SetLogger(s.logf)
undos = append(undos, func() { dnsfallback.SetLogger(oldDnsFallback) })
return func() {
for _, fn := range undos {
fn()
}
}
}
// printAuthURLLoop loops once every few seconds while the server is still running and
// is in NeedsLogin state, printing out the auth URL.
func (s *Server) printAuthURLLoop() {