From 243b82752255ad2071e1bfbedb4f788685ed2c8c Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 28 Feb 2023 10:33:00 -0800 Subject: [PATCH] bool -> atomic.Bool to prevent "race condition" --- protocol/connections/engine.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/protocol/connections/engine.go b/protocol/connections/engine.go index 419a381..959e719 100644 --- a/protocol/connections/engine.go +++ b/protocol/connections/engine.go @@ -50,7 +50,7 @@ type engine struct { authorizations sync.Map // string(onion) => model.Authorization // Block Unknown Contacts - blockUnknownContacts bool + blockUnknownContacts atomic.Bool // Pointer to the Global Event Manager eventManager event.Manager @@ -240,10 +240,10 @@ func (e *engine) eventHandler() { } case event.AllowUnknownPeers: log.Debugf("%v now allows unknown connections", e.identity.Hostname()) - e.blockUnknownContacts = false + e.blockUnknownContacts.Store(false) case event.BlockUnknownPeers: log.Debugf("%v now forbids unknown connections", e.identity.Hostname()) - e.blockUnknownContacts = true + e.blockUnknownContacts.Store(true) case event.ProtocolEngineStartListen: go e.listenFn() case event.ShareManifest: @@ -285,7 +285,7 @@ func (e *engine) isBlocked(onion string) bool { authorization, known := e.authorizations.Load(onion) if !known { // if we block unknown peers we will block this contact - return e.blockUnknownContacts + return e.blockUnknownContacts.Load() } return authorization.(model.Authorization) == model.AuthBlocked } @@ -296,7 +296,7 @@ func (e *engine) isAllowed(onion string) bool { log.Errorf("attempted to lookup authorization of onion not in map...that should never happen") return false } - if e.blockUnknownContacts { + if e.blockUnknownContacts.Load() { return authorization.(model.Authorization) == model.AuthApproved } return authorization.(model.Authorization) != model.AuthBlocked