mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-16 03:31:39 +00:00
ipn: allow b to be nil in NewBackendServer
A couple of code paths in ipnserver use a NewBackendServer with a nil backend just to call the callback with an encapsulated error message. This covers a panic case seen in logs. For #1920 Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
This commit is contained in:
parent
e2dcf63420
commit
293a2b11cd
@ -104,7 +104,9 @@ func NewBackendServer(logf logger.Logf, b Backend, sendNotifyMsg func(Notify)) *
|
|||||||
b: b,
|
b: b,
|
||||||
sendNotifyMsg: sendNotifyMsg,
|
sendNotifyMsg: sendNotifyMsg,
|
||||||
}
|
}
|
||||||
if sendNotifyMsg != nil {
|
// b may be nil if the BackendServer is being created just to
|
||||||
|
// encapsulate and send an error message.
|
||||||
|
if sendNotifyMsg != nil && b != nil {
|
||||||
b.SetNotifyCallback(bs.send)
|
b.SetNotifyCallback(bs.send)
|
||||||
}
|
}
|
||||||
return bs
|
return bs
|
||||||
|
@ -187,3 +187,17 @@ func TestClientServer(t *testing.T) {
|
|||||||
})
|
})
|
||||||
flushUntil(Running)
|
flushUntil(Running)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNilBackend(t *testing.T) {
|
||||||
|
var called *Notify
|
||||||
|
bs := NewBackendServer(t.Logf, nil, func(n Notify) {
|
||||||
|
called = &n
|
||||||
|
})
|
||||||
|
bs.SendErrorMessage("Danger, Will Robinson!")
|
||||||
|
if called == nil {
|
||||||
|
t.Errorf("expect callback to be called, wasn't")
|
||||||
|
}
|
||||||
|
if called.ErrMessage == nil || *called.ErrMessage != "Danger, Will Robinson!" {
|
||||||
|
t.Errorf("callback got wrong error: %v", called.ErrMessage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user