From 258cdcc13fb1559a3488ac2e74845e108da7f5ad Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Fri, 2 Feb 2024 09:41:13 +1300 Subject: [PATCH] Fix a race condition in the relay usage switches --- gossip-bin/src/ui/widgets/relay_entry.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/gossip-bin/src/ui/widgets/relay_entry.rs b/gossip-bin/src/ui/widgets/relay_entry.rs index 44cd7e458..6a7f940bd 100644 --- a/gossip-bin/src/ui/widgets/relay_entry.rs +++ b/gossip-bin/src/ui/widgets/relay_entry.rs @@ -713,14 +713,16 @@ impl RelayEntry { off_fill, ); if response.changed() { - modify_relay(&self.relay.url, |relay| { - relay.adjust_usage_bit(Relay::READ, self.usage.read) - }); if !self.usage.read { // if read was turned off, inbox must also be turned off self.usage.inbox = false; modify_relay(&self.relay.url, |relay| { - relay.adjust_usage_bit(Relay::INBOX, self.usage.inbox) + relay.adjust_usage_bit(Relay::READ, self.usage.read); + relay.adjust_usage_bit(Relay::INBOX, self.usage.inbox); + }); + } else { + modify_relay(&self.relay.url, |relay| { + relay.adjust_usage_bit(Relay::READ, self.usage.read); }); } } @@ -799,14 +801,16 @@ impl RelayEntry { off_fill, ); if response.changed() { - modify_relay(&self.relay.url, |relay| { - relay.adjust_usage_bit(Relay::WRITE, self.usage.write) - }); if !self.usage.write { // if write was turned off, outbox must also be turned off self.usage.outbox = false; modify_relay(&self.relay.url, |relay| { - relay.adjust_usage_bit(Relay::OUTBOX, self.usage.outbox) + relay.adjust_usage_bit(Relay::WRITE, self.usage.write); + relay.adjust_usage_bit(Relay::OUTBOX, self.usage.outbox); + }); + } else { + modify_relay(&self.relay.url, |relay| { + relay.adjust_usage_bit(Relay::WRITE, self.usage.write); }); } }