Skip to content

Commit 9c02f23

Browse files
authored
Merge pull request #485 from elnosh/check-network-switch
Add `NetworkMismatch` error type
2 parents 22e97da + ca49cb7 commit 9c02f23

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

bindings/ldk_node.udl

+1
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ enum BuildError {
322322
"KVStoreSetupFailed",
323323
"WalletSetupFailed",
324324
"LoggerSetupFailed",
325+
"NetworkMismatch",
325326
};
326327

327328
[Trait]

src/builder.rs

+24-3
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ pub enum BuildError {
168168
WalletSetupFailed,
169169
/// We failed to setup the logger.
170170
LoggerSetupFailed,
171+
/// The given network does not match the node's previously configured network.
172+
NetworkMismatch,
171173
}
172174

173175
impl fmt::Display for BuildError {
@@ -189,6 +191,9 @@ impl fmt::Display for BuildError {
189191
Self::WalletSetupFailed => write!(f, "Failed to setup onchain wallet."),
190192
Self::LoggerSetupFailed => write!(f, "Failed to setup the logger."),
191193
Self::InvalidNodeAlias => write!(f, "Given node alias is invalid."),
194+
Self::NetworkMismatch => {
195+
write!(f, "Given network does not match the node's previously configured network.")
196+
},
192197
}
193198
}
194199
}
@@ -904,9 +909,25 @@ fn build_with_store_internal(
904909
.extract_keys()
905910
.check_network(config.network)
906911
.load_wallet(&mut wallet_persister)
907-
.map_err(|e| {
908-
log_error!(logger, "Failed to set up wallet: {}", e);
909-
BuildError::WalletSetupFailed
912+
.map_err(|e| match e {
913+
bdk_wallet::LoadWithPersistError::InvalidChangeSet(
914+
bdk_wallet::LoadError::Mismatch(bdk_wallet::LoadMismatch::Network {
915+
loaded,
916+
expected,
917+
}),
918+
) => {
919+
log_error!(
920+
logger,
921+
"Failed to setup wallet: Networks do not match. Expected {} but got {}",
922+
expected,
923+
loaded
924+
);
925+
BuildError::NetworkMismatch
926+
},
927+
_ => {
928+
log_error!(logger, "Failed to set up wallet: {}", e);
929+
BuildError::WalletSetupFailed
930+
},
910931
})?;
911932
let bdk_wallet = match wallet_opt {
912933
Some(wallet) => wallet,

0 commit comments

Comments
 (0)