From 512a0834e0f27a145470c507b50b5e66c09dc926 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Mar 2022 12:44:18 -0700 Subject: [PATCH 1/2] Remove onion lookup map from NetworkCheck --- app/plugins/contactRetry.go | 6 ++++++ app/plugins/networkCheck.go | 16 +++++++--------- app/plugins/plugin.go | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/plugins/contactRetry.go b/app/plugins/contactRetry.go index d23f031..4856929 100644 --- a/app/plugins/contactRetry.go +++ b/app/plugins/contactRetry.go @@ -131,6 +131,12 @@ func (cr *contactRetry) retryDisconnected() { } func (cr *contactRetry) handleEvent(id string, state connections.ConnectionState, ctype connectionType) { + + // don't handle contact retries for ourselves + if id == cr.onion { + return + } + if _, exists := cr.connections.Load(id); !exists { p := &contact{id: id, state: state, backoff: 0, ticks: 0, ctype: ctype} cr.connections.Store(id, p) diff --git a/app/plugins/networkCheck.go b/app/plugins/networkCheck.go index 51f4545..9ce1f60 100644 --- a/app/plugins/networkCheck.go +++ b/app/plugins/networkCheck.go @@ -20,8 +20,8 @@ const NetworkCheckSuccess = "Success" type networkCheck struct { bus event.Manager queue event.Queue + onion string acn connectivity.ACN - onionsToCheck sync.Map // onion:string => true:bool breakChan chan bool running bool offline bool @@ -29,8 +29,8 @@ type networkCheck struct { } // NewNetworkCheck returns a Plugin that when started will attempt various network tests -func NewNetworkCheck(bus event.Manager, acn connectivity.ACN) Plugin { - nc := &networkCheck{bus: bus, acn: acn, queue: event.NewQueue(), breakChan: make(chan bool, 1)} +func NewNetworkCheck(onion string, bus event.Manager, acn connectivity.ACN) Plugin { + nc := &networkCheck{onion:onion, bus: bus, acn: acn, queue: event.NewQueue(), breakChan: make(chan bool, 1)} return nc } @@ -61,12 +61,13 @@ func (nc *networkCheck) run() { // and then we will wait a minute and check the connection for the first time (the onion should be up) // under normal operating circumstances case event.ProtocolEngineStartListen: - if _, exists := nc.onionsToCheck.Load(e.Data[event.Onion]); !exists { + if nc.onion == (e.Data[event.Onion]) { log.Debugf("initiating connection check for %v", e.Data[event.Onion]) - nc.onionsToCheck.Store(e.Data[event.Onion], true) if time.Since(lastMessageReceived) > time.Minute { nc.selfTest() } + } else { + log.Errorf("network check plugin received an event for a different profile than it was started with. Internal wiring is probably wrong.") } case event.PeerStateChange: fallthrough @@ -114,10 +115,7 @@ func (nc *networkCheck) Shutdown() { } func (nc *networkCheck) selfTest() { - nc.onionsToCheck.Range(func(key, val interface{}) bool { - go nc.checkConnection(key.(string)) - return true - }) + go nc.checkConnection(nc.onion) } // diff --git a/app/plugins/plugin.go b/app/plugins/plugin.go index be8252b..f5a9915 100644 --- a/app/plugins/plugin.go +++ b/app/plugins/plugin.go @@ -27,7 +27,7 @@ func Get(id PluginID, bus event.Manager, acn connectivity.ACN, onion string) (Pl case CONNECTIONRETRY: return NewConnectionRetry(bus, onion), nil case NETWORKCHECK: - return NewNetworkCheck(bus, acn), nil + return NewNetworkCheck(onion, bus, acn), nil } return nil, fmt.Errorf("plugin not defined %v", id) -- 2.25.1 From dae2d358bcc1fa307d2b9fed4f1b8c0b09603bc7 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Mar 2022 12:45:29 -0700 Subject: [PATCH 2/2] Formatting --- app/plugins/networkCheck.go | 18 +++++++++--------- peer/storage.go | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/plugins/networkCheck.go b/app/plugins/networkCheck.go index 9ce1f60..a38260c 100644 --- a/app/plugins/networkCheck.go +++ b/app/plugins/networkCheck.go @@ -18,19 +18,19 @@ const NetworkCheckSuccess = "Success" // networkCheck is a convenience plugin for testing high level availability of onion services type networkCheck struct { - bus event.Manager - queue event.Queue - onion string - acn connectivity.ACN - breakChan chan bool - running bool - offline bool - offlineLock sync.Mutex + bus event.Manager + queue event.Queue + onion string + acn connectivity.ACN + breakChan chan bool + running bool + offline bool + offlineLock sync.Mutex } // NewNetworkCheck returns a Plugin that when started will attempt various network tests func NewNetworkCheck(onion string, bus event.Manager, acn connectivity.ACN) Plugin { - nc := &networkCheck{onion:onion, bus: bus, acn: acn, queue: event.NewQueue(), breakChan: make(chan bool, 1)} + nc := &networkCheck{onion: onion, bus: bus, acn: acn, queue: event.NewQueue(), breakChan: make(chan bool, 1)} return nc } diff --git a/peer/storage.go b/peer/storage.go index 68db73b..af87888 100644 --- a/peer/storage.go +++ b/peer/storage.go @@ -240,7 +240,7 @@ func checkCwtchProfileBackupFile(srcFile string) (string, error) { profileFileType := parts[1] _, hexErr := hex.DecodeString(dir) - if dir == "." || dir == ".." || len(dir) !=32 || hexErr != nil { + if dir == "." || dir == ".." || len(dir) != 32 || hexErr != nil { return "", errors.New("invalid profile name") } -- 2.25.1