Minor fixes
This commit is contained in:
parent
14c8f75f7a
commit
c17af6ee8c
13 changed files with 357 additions and 181 deletions
|
|
@ -39,8 +39,8 @@ type defaultInterfaceMonitor struct {
|
|||
overrideAndroidVPN bool
|
||||
underNetworkExtension bool
|
||||
defaultInterface atomic.Pointer[control.Interface]
|
||||
androidVPNEnabled bool
|
||||
noRoute bool
|
||||
androidVPNEnabled atomic.Bool
|
||||
noRoute atomic.Bool
|
||||
networkMonitor NetworkUpdateMonitor
|
||||
logger logger.Logger
|
||||
checkUpdateTimer *time.Timer
|
||||
|
|
@ -67,6 +67,8 @@ func (m *defaultInterfaceMonitor) Start() error {
|
|||
}
|
||||
|
||||
func (m *defaultInterfaceMonitor) delayCheckUpdate() {
|
||||
m.access.Lock()
|
||||
defer m.access.Unlock()
|
||||
if m.checkUpdateTimer == nil {
|
||||
m.checkUpdateTimer = time.AfterFunc(time.Second, m.postCheckUpdate)
|
||||
} else {
|
||||
|
|
@ -82,15 +84,15 @@ func (m *defaultInterfaceMonitor) postCheckUpdate() {
|
|||
}
|
||||
err = m.checkUpdate()
|
||||
if errors.Is(err, ErrNoRoute) {
|
||||
if !m.noRoute {
|
||||
m.noRoute = true
|
||||
if !m.noRoute.Load() {
|
||||
m.noRoute.Store(true)
|
||||
m.defaultInterface.Store(nil)
|
||||
m.emit(nil, 0)
|
||||
}
|
||||
} else if err != nil {
|
||||
m.logger.Error("check interface: ", err)
|
||||
} else {
|
||||
m.noRoute = false
|
||||
m.noRoute.Store(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +112,7 @@ func (m *defaultInterfaceMonitor) OverrideAndroidVPN() bool {
|
|||
}
|
||||
|
||||
func (m *defaultInterfaceMonitor) AndroidVPNEnabled() bool {
|
||||
return m.androidVPNEnabled
|
||||
return m.androidVPNEnabled.Load()
|
||||
}
|
||||
|
||||
func (m *defaultInterfaceMonitor) RegisterCallback(callback DefaultInterfaceUpdateCallback) *list.Element[DefaultInterfaceUpdateCallback] {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue