diff --git a/wgengine/monitor/monitor_windows.go b/wgengine/monitor/monitor_windows.go index d21c1409a..bd39f3b72 100644 --- a/wgengine/monitor/monitor_windows.go +++ b/wgengine/monitor/monitor_windows.go @@ -51,11 +51,13 @@ func newOSMon(logf logger.Logf, _ *Mon) (osMon, error) { messagec: make(chan eventMessage, 1), noDeadlockTicker: time.NewTicker(5000 * time.Hour), // arbitrary } + m.ctx, m.cancel = context.WithCancel(context.Background()) var err error m.addressChangeCallback, err = winipcfg.RegisterUnicastAddressChangeCallback(m.unicastAddressChanged) if err != nil { m.logf("winipcfg.RegisterUnicastAddressChangeCallback error: %v", err) + m.cancel() return nil, err } @@ -63,11 +65,10 @@ func newOSMon(logf logger.Logf, _ *Mon) (osMon, error) { if err != nil { m.addressChangeCallback.Unregister() m.logf("winipcfg.RegisterRouteChangeCallback error: %v", err) + m.cancel() return nil, err } - m.ctx, m.cancel = context.WithCancel(context.Background()) - return m, nil }