Skip to content

Commit 464f2c3

Browse files
authored
feat: wallet ffi use dns (#6152)
Description --- Add the option for the wallet_ffi, to use the DNS build into it. Motivation and Context --- Allow the fii to use DNS. How Has This Been Tested? --- Manual
1 parent aaad66e commit 464f2c3

File tree

9 files changed

+177
-58
lines changed

9 files changed

+177
-58
lines changed

applications/minotari_console_wallet/src/automation/commands.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,9 @@ async fn set_base_node_peer(
315315
) -> Result<(CommsPublicKey, Multiaddr), CommandError> {
316316
println!("Setting base node peer...");
317317
println!("{}::{}", public_key, address);
318-
wallet.set_base_node_peer(public_key.clone(), address.clone()).await?;
318+
wallet
319+
.set_base_node_peer(public_key.clone(), Some(address.clone()))
320+
.await?;
319321
Ok((public_key, address))
320322
}
321323

applications/minotari_console_wallet/src/grpc/wallet_grpc_server.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ impl wallet_server::Wallet for WalletGrpcServer {
250250
println!("{}::{}", public_key, net_address);
251251
let mut wallet = self.wallet.clone();
252252
wallet
253-
.set_base_node_peer(public_key.clone(), net_address.clone())
253+
.set_base_node_peer(public_key.clone(), Some(net_address.clone()))
254254
.await
255255
.map_err(|e| Status::internal(format!("{:?}", e)))?;
256256

applications/minotari_console_wallet/src/init/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ pub async fn start_wallet(
571571
.ok_or_else(|| ExitError::new(ExitCode::ConfigError, "Configured base node has no address!"))?;
572572

573573
wallet
574-
.set_base_node_peer(base_node.public_key.clone(), net_address.address().clone())
574+
.set_base_node_peer(base_node.public_key.clone(), Some(net_address.address().clone()))
575575
.await
576576
.map_err(|e| {
577577
ExitError::new(

applications/minotari_console_wallet/src/ui/state/app_state.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,7 +1050,7 @@ impl AppStateInner {
10501050
self.wallet
10511051
.set_base_node_peer(
10521052
peer.public_key.clone(),
1053-
peer.addresses.best().ok_or(UiError::NoAddress)?.address().clone(),
1053+
Some(peer.addresses.best().ok_or(UiError::NoAddress)?.address().clone()),
10541054
)
10551055
.await?;
10561056

@@ -1075,7 +1075,7 @@ impl AppStateInner {
10751075
self.wallet
10761076
.set_base_node_peer(
10771077
peer.public_key.clone(),
1078-
peer.addresses.best().ok_or(UiError::NoAddress)?.address().clone(),
1078+
Some(peer.addresses.best().ok_or(UiError::NoAddress)?.address().clone()),
10791079
)
10801080
.await?;
10811081

@@ -1113,7 +1113,7 @@ impl AppStateInner {
11131113
self.wallet
11141114
.set_base_node_peer(
11151115
previous.public_key.clone(),
1116-
previous.addresses.best().ok_or(UiError::NoAddress)?.address().clone(),
1116+
Some(previous.addresses.best().ok_or(UiError::NoAddress)?.address().clone()),
11171117
)
11181118
.await?;
11191119

base_layer/wallet/src/wallet.rs

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -369,10 +369,10 @@ where
369369
pub async fn set_base_node_peer(
370370
&mut self,
371371
public_key: CommsPublicKey,
372-
address: Multiaddr,
372+
address: Option<Multiaddr>,
373373
) -> Result<(), WalletError> {
374374
info!(
375-
"Wallet setting base node peer, public key: {}, net address: {}.",
375+
"Wallet setting base node peer, public key: {}, net address: {:?}.",
376376
public_key, address
377377
);
378378

@@ -387,27 +387,41 @@ where
387387
let mut connectivity = self.comms.connectivity();
388388
if let Some(mut current_peer) = peer_manager.find_by_public_key(&public_key).await? {
389389
// Only invalidate the identity signature if addresses are different
390-
if current_peer.addresses.contains(&address) {
391-
info!(
392-
target: LOG_TARGET,
393-
"Address for base node differs from storage. Was {}, setting to {}",
394-
current_peer.addresses,
395-
address
396-
);
397-
398-
current_peer.addresses.add_address(&address, &PeerAddressSource::Config);
399-
peer_manager.add_peer(current_peer.clone()).await?;
390+
if address.is_some() {
391+
let add = address.unwrap();
392+
if !current_peer.addresses.contains(&add) {
393+
info!(
394+
target: LOG_TARGET,
395+
"Address for base node differs from storage. Was {}, setting to {}",
396+
current_peer.addresses,
397+
add
398+
);
399+
400+
current_peer.addresses.add_address(&add, &PeerAddressSource::Config);
401+
peer_manager.add_peer(current_peer.clone()).await?;
402+
}
400403
}
401404
connectivity
402405
.add_peer_to_allow_list(current_peer.node_id.clone())
403406
.await?;
404407
self.wallet_connectivity.set_base_node(current_peer);
405408
} else {
406409
let node_id = NodeId::from_key(&public_key);
410+
if address.is_none() {
411+
debug!(
412+
target: LOG_TARGET,
413+
"Trying to add new peer without an address",
414+
);
415+
return Err(WalletError::ArgumentError {
416+
argument: "set_base_node_peer, address".to_string(),
417+
value: "{Missing}".to_string(),
418+
message: "New peers need the address filled in".to_string(),
419+
});
420+
}
407421
let peer = Peer::new(
408422
public_key,
409423
node_id,
410-
MultiaddressesWithStats::from_addresses_with_source(vec![address], &PeerAddressSource::Config),
424+
MultiaddressesWithStats::from_addresses_with_source(vec![address.unwrap()], &PeerAddressSource::Config),
411425
PeerFlags::empty(),
412426
PeerFeatures::COMMUNICATION_NODE,
413427
Default::default(),

0 commit comments

Comments
 (0)