From a5fd348b9608515e21da9ff7e6a2107fc79ed034 Mon Sep 17 00:00:00 2001 From: Patrick Pacher Date: Fri, 3 Apr 2020 14:16:52 +0200 Subject: [PATCH] Export netenv event names --- netenv/main.go | 8 ++++---- netenv/network-change.go | 32 +++++++++++++++----------------- netenv/online-status.go | 26 +++++++++++--------------- 3 files changed, 30 insertions(+), 36 deletions(-) diff --git a/netenv/main.go b/netenv/main.go index d8d07b3c..2c360d6d 100644 --- a/netenv/main.go +++ b/netenv/main.go @@ -5,8 +5,8 @@ import ( ) const ( - networkChangedEvent = "network changed" - onlineStatusChangedEvent = "online status changed" + NetworkChangedEvent = "network changed" + OnlineStatusChangedEvent = "online status changed" ) var ( @@ -15,8 +15,8 @@ var ( func init() { module = modules.Register("netenv", nil, start, nil) - module.RegisterEvent(networkChangedEvent) - module.RegisterEvent(onlineStatusChangedEvent) + module.RegisterEvent(NetworkChangedEvent) + module.RegisterEvent(OnlineStatusChangedEvent) } func start() error { diff --git a/netenv/network-change.go b/netenv/network-change.go index 8e1a9f68..63f9b066 100644 --- a/netenv/network-change.go +++ b/netenv/network-change.go @@ -29,23 +29,21 @@ serviceLoop: for { trigger := false + timeout := time.Minute + if GetOnlineStatus() != StatusOnline { + timeout = time.Second + } // wait for trigger - if GetOnlineStatus() == StatusOnline { - select { - case <-ctx.Done(): - return nil - case <-networkChangeCheckTrigger: - case <-time.After(1 * time.Minute): - trigger = true - } - } else { - select { - case <-ctx.Done(): - return nil - case <-networkChangeCheckTrigger: - case <-time.After(1 * time.Second): - trigger = true - } + select { + case <-ctx.Done(): + return nil + case <-networkChangeCheckTrigger: + // don't fall through because the online change check + // triggers the networkChangeCheck this way. If we would set + // trigger == true we would trigger the online check again + // resulting in a loop of pointless checks. + case <-time.After(timeout): + trigger = true } // check network for changes @@ -84,7 +82,7 @@ serviceLoop: if trigger { triggerOnlineStatusInvestigation() } - module.TriggerEvent(networkChangedEvent, nil) + module.TriggerEvent(NetworkChangedEvent, nil) } } diff --git a/netenv/online-status.go b/netenv/online-status.go index c1773cb7..a9880844 100644 --- a/netenv/online-status.go +++ b/netenv/online-status.go @@ -156,7 +156,7 @@ func updateOnlineStatus(status OnlineStatus, portalURL, comment string) { // trigger event if changed { - module.TriggerEvent(onlineStatusChangedEvent, nil) + module.TriggerEvent(OnlineStatusChangedEvent, nil) if status == StatusPortal { log.Infof(`network: setting online status to %s at "%s" (%s)`, status, captivePortalURL, comment) } else { @@ -201,21 +201,17 @@ func triggerOnlineStatusInvestigation() { func monitorOnlineStatus(ctx context.Context) error { for { + timeout := time.Minute + if GetOnlineStatus() != StatusOnline { + timeout = time.Second + } // wait for trigger - if GetOnlineStatus() == StatusOnline { - select { - case <-ctx.Done(): - return nil - case <-onlineStatusInvestigationTrigger: - case <-time.After(1 * time.Minute): - } - } else { - select { - case <-ctx.Done(): - return nil - case <-onlineStatusInvestigationTrigger: - case <-time.After(1 * time.Second): - } + select { + case <-ctx.Done(): + return nil + case <-onlineStatusInvestigationTrigger: + + case <-time.After(timeout): } // enable waiting