summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ipn/message.go4
-rw-r--r--ipn/message_test.go14
2 files changed, 17 insertions, 1 deletions
diff --git a/ipn/message.go b/ipn/message.go
index d8b7d1396..fb5638eca 100644
--- a/ipn/message.go
+++ b/ipn/message.go
@@ -104,7 +104,9 @@ func NewBackendServer(logf logger.Logf, b Backend, sendNotifyMsg func(Notify)) *
b: b,
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)
}
return bs
diff --git a/ipn/message_test.go b/ipn/message_test.go
index 79c4a76b6..194ac3b89 100644
--- a/ipn/message_test.go
+++ b/ipn/message_test.go
@@ -187,3 +187,17 @@ func TestClientServer(t *testing.T) {
})
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)
+ }
+}