diff --git a/monitor_android.go b/monitor_android.go index 2734c85..1c7e711 100644 --- a/monitor_android.go +++ b/monitor_android.go @@ -51,12 +51,11 @@ func (m *defaultInterfaceMonitor) checkUpdate() error { return err } - oldInterface := m.defaultInterface.Load() newInterface, err := m.interfaceFinder.ByIndex(link.Attrs().Index) if err != nil { return E.Cause(err, "find updated interface: ", link.Attrs().Name) } - m.defaultInterface.Store(newInterface) + oldInterface := m.defaultInterface.Swap(newInterface) if oldInterface != nil && oldInterface.Equals(*newInterface) && oldVPNEnabled == m.androidVPNEnabled { return nil } diff --git a/monitor_darwin.go b/monitor_darwin.go index 88ea90c..f937c37 100644 --- a/monitor_darwin.go +++ b/monitor_darwin.go @@ -165,12 +165,11 @@ func (m *defaultInterfaceMonitor) checkUpdate() error { if defaultInterface == nil { return ErrNoRoute } - oldInterface := m.defaultInterface.Load() newInterface, err := m.interfaceFinder.ByIndex(defaultInterface.Index) if err != nil { return E.Cause(err, "find updated interface: ", defaultInterface.Name) } - m.defaultInterface.Store(newInterface) + oldInterface := m.defaultInterface.Swap(newInterface) if oldInterface != nil && oldInterface.Equals(*newInterface) { return nil } diff --git a/monitor_linux_default.go b/monitor_linux_default.go index e9cce1d..72ba1be 100644 --- a/monitor_linux_default.go +++ b/monitor_linux_default.go @@ -25,12 +25,11 @@ func (m *defaultInterfaceMonitor) checkUpdate() error { return err } - oldInterface := m.defaultInterface.Load() newInterface, err := m.interfaceFinder.ByIndex(link.Attrs().Index) if err != nil { return E.Cause(err, "find updated interface: ", link.Attrs().Name) } - m.defaultInterface.Store(newInterface) + oldInterface := m.defaultInterface.Swap(newInterface) if oldInterface != nil && oldInterface.Equals(*newInterface) { return nil } diff --git a/monitor_windows.go b/monitor_windows.go index 179f074..18a795f 100644 --- a/monitor_windows.go +++ b/monitor_windows.go @@ -102,12 +102,11 @@ func (m *defaultInterfaceMonitor) checkUpdate() error { return ErrNoRoute } - oldInterface := m.defaultInterface.Load() newInterface, err := m.interfaceFinder.ByIndex(index) if err != nil { return E.Cause(err, "find updated interface: ", alias) } - m.defaultInterface.Store(newInterface) + oldInterface := m.defaultInterface.Swap(newInterface) if oldInterface != nil && oldInterface.Equals(*newInterface) { return nil }