From 7e079729e6c0437fb38e1f31a85610266992951d Mon Sep 17 00:00:00 2001 From: Hansie Odendaal <39146854+hansieodendaal@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:15:23 +0200 Subject: [PATCH] feat: add wallet ffi backup peers (#6591) Description --- Added wallet FFI backup peers (all seed peers) when the base node is set. Motivation and Context --- This adds resilience to the base node connection. How Has This Been Tested? --- The scheme works for the console wallet, but must be tested with the FFI in Aurora. What process can a PR reviewer use to test or verify this change? --- Code review. Breaking Changes --- - [x] None - [ ] Requires data directory on base node to be deleted - [ ] Requires hard fork - [ ] Other - Please specify --- base_layer/wallet_ffi/src/lib.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/base_layer/wallet_ffi/src/lib.rs b/base_layer/wallet_ffi/src/lib.rs index 76fc6be007..88a440ed76 100644 --- a/base_layer/wallet_ffi/src/lib.rs +++ b/base_layer/wallet_ffi/src/lib.rs @@ -6906,10 +6906,20 @@ pub unsafe extern "C" fn wallet_set_base_node_peer( } }; + let peer_manager = (*wallet).wallet.comms.peer_manager(); + let query = PeerQuery::new().select_where(|p| p.is_seed()); + let backup_peers = match (*wallet) + .runtime + .block_on(async move { Result::<_, WalletError>::Ok(peer_manager.perform_query(query).await?) }) + { + Ok(peers) => Some(peers), + Err(_) => None, + }; + if let Err(e) = (*wallet).runtime.block_on((*wallet).wallet.set_base_node_peer( (*public_key).clone(), parsed_addr, - None, + backup_peers, )) { error = LibWalletError::from(e).code; ptr::swap(error_out, &mut error as *mut c_int);