Check for pending blocks in change_seed action (#768)

This commit is contained in:
SergiySW 2018-03-31 01:24:30 +03:00 committed by Lee Bousfield
commit 6b5e215e5a

View file

@ -1305,6 +1305,7 @@ rai::public_key rai::wallet::change_seed (MDB_txn * transaction_a, rai::raw_key
rai::raw_key prv;
store.deterministic_key (prv, transaction_a, i);
rai::keypair pair (prv.data.to_string ());
// Check if account received at least 1 block
auto latest (node.ledger.latest (transaction_a, pair.pub));
if (!latest.is_zero ())
{
@ -1313,6 +1314,17 @@ rai::public_key rai::wallet::change_seed (MDB_txn * transaction_a, rai::raw_key
// i/64 - Check additional accounts for large wallets. I.e. 64000/64 = 1000 accounts to check
n = i + 64 + (i / 64);
}
else
{
// Check if there are pending blocks for account
rai::account end (pair.pub.number () + 1);
for (auto ii (node.store.pending_begin (transaction_a, rai::pending_key (pair.pub, 0))), nn (node.store.pending_begin (transaction_a, rai::pending_key (end, 0))); ii != nn; ++ii)
{
count = i;
n = i + 64 + (i / 64);
break;
}
}
}
for (uint32_t i (0); i < count; ++i)
{