From 591f141c2ac3bbd428d93fb46434ecf7d8ede93f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20I=C3=B1aki=20Bilbao?= Date: Wed, 23 Apr 2025 18:19:06 -0300 Subject: [PATCH 1/3] Skip participant if ID == 0 --- crates/signer/src/manager/dirk.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/signer/src/manager/dirk.rs b/crates/signer/src/manager/dirk.rs index 0b9c9855..c2d00632 100644 --- a/crates/signer/src/manager/dirk.rs +++ b/crates/signer/src/manager/dirk.rs @@ -659,6 +659,11 @@ fn load_distributed_accounts( continue; }; + if participant_id == 0 { + warn!("Skiping invalid participant ID (0)"); + continue + } + match consensus_accounts.get_mut(&public_key) { Some(Account::Distributed(DistributedAccount { participants, .. })) => { participants.insert(participant_id as u32, channel.clone()); From 3ec19b5914084403dfa04bc06c251c0329a06cde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20I=C3=B1aki=20Bilbao?= Date: Thu, 24 Apr 2025 11:59:27 -0300 Subject: [PATCH 2/3] Improve log message --- crates/signer/src/manager/dirk.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/signer/src/manager/dirk.rs b/crates/signer/src/manager/dirk.rs index c2d00632..a53333a3 100644 --- a/crates/signer/src/manager/dirk.rs +++ b/crates/signer/src/manager/dirk.rs @@ -660,7 +660,10 @@ fn load_distributed_accounts( }; if participant_id == 0 { - warn!("Skiping invalid participant ID (0)"); + warn!( + "Skiping invalid participant ID (0) for account {} in host {host_name}", + account.name + ); continue } From b89d2a6a453bff916d36d3dc53c5a93d2d2b2284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20I=C3=B1aki=20Bilbao?= Date: Thu, 24 Apr 2025 12:00:16 -0300 Subject: [PATCH 3/3] Warn log if duplicated participant ID is found --- crates/signer/src/manager/dirk.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/signer/src/manager/dirk.rs b/crates/signer/src/manager/dirk.rs index a53333a3..f23f9f3e 100644 --- a/crates/signer/src/manager/dirk.rs +++ b/crates/signer/src/manager/dirk.rs @@ -669,7 +669,12 @@ fn load_distributed_accounts( match consensus_accounts.get_mut(&public_key) { Some(Account::Distributed(DistributedAccount { participants, .. })) => { - participants.insert(participant_id as u32, channel.clone()); + if participants.insert(participant_id as u32, channel.clone()).is_some() { + warn!( + "Duplicated participant ID ({participant_id}) for account {} in host {host_name}. Keeping this host", + account.name + ); + } } None => { let Ok((wallet, name)) = decompose_name(&account.name) else {