From 4059bfeca2163d1f9e3ee0a193c92eac6ad2e408 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Fri, 16 Aug 2024 14:24:15 -0600 Subject: [PATCH] zcash_client_sqlite: Ensure we will query for status of unmined transactions in `store_decrypted_tx` --- zcash_client_sqlite/src/lib.rs | 35 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/zcash_client_sqlite/src/lib.rs b/zcash_client_sqlite/src/lib.rs index e1017bfe2..caaffd422 100644 --- a/zcash_client_sqlite/src/lib.rs +++ b/zcash_client_sqlite/src/lib.rs @@ -1202,14 +1202,6 @@ impl WalletWrite for WalletDb #[cfg(feature = "transparent-inputs")] let mut tx_has_wallet_outputs = false; - #[cfg(feature = "transparent-inputs")] - let detectable_via_scanning = d_tx.tx().sapling_bundle().is_some(); - #[cfg(all(feature = "transparent-inputs", feature = "orchard"))] - let detectable_via_scanning = detectable_via_scanning | d_tx.tx().orchard_bundle().is_some(); - - #[cfg(feature = "transparent-inputs")] - let mut queue_status_retrieval = false; - for output in d_tx.sapling_outputs() { #[cfg(feature = "transparent-inputs")] { @@ -1507,13 +1499,6 @@ impl WalletWrite for WalletDb { tx_has_wallet_outputs = true; } - - // If the decrypted transaction is unmined and has no shielded - // components, add it to the queue for status retrieval. - #[cfg(feature = "transparent-inputs")] - if d_tx.mined_height().is_none() && !detectable_via_scanning { - queue_status_retrieval = true; - } } } else { warn!( @@ -1543,13 +1528,21 @@ impl WalletWrite for WalletDb notify_tx_retrieved(wdb.conn.0, d_tx.tx().txid())?; + // If the decrypted transaction is unmined and has no shielded components, add it to + // the queue for status retrieval. #[cfg(feature = "transparent-inputs")] - if queue_status_retrieval { - wallet::queue_tx_retrieval( - wdb.conn.0, - std::iter::once(d_tx.tx().txid()), - None - )?; + { + let detectable_via_scanning = d_tx.tx().sapling_bundle().is_some(); + #[cfg(feature = "orchard")] + let detectable_via_scanning = detectable_via_scanning | d_tx.tx().orchard_bundle().is_some(); + + if d_tx.mined_height().is_none() && !detectable_via_scanning { + wallet::queue_tx_retrieval( + wdb.conn.0, + std::iter::once(d_tx.tx().txid()), + None + )?; + } } Ok(())