zcash_client_sqlite: Ensure we will query for status of unmined transactions in `store_decrypted_tx`

This commit is contained in:
Kris Nuttycombe 2024-08-16 14:24:15 -06:00
parent 3089e3b29d
commit 4059bfeca2
1 changed files with 14 additions and 21 deletions

View File

@ -1202,14 +1202,6 @@ impl<P: consensus::Parameters> WalletWrite for WalletDb<rusqlite::Connection, P>
#[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<P: consensus::Parameters> WalletWrite for WalletDb<rusqlite::Connection, P>
{
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<P: consensus::Parameters> WalletWrite for WalletDb<rusqlite::Connection, P>
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(())