Support gap_source for ublocks (#695)
This commit is contained in:
parent
c15b77f11c
commit
fbaf67ac68
2 changed files with 9 additions and 5 deletions
|
@ -1711,7 +1711,7 @@ TEST (ledger, utx_unreceivable_fail)
|
|||
ASSERT_EQ (rai::Gxrb_ratio, ledger.amount (transaction, send1.hash ()));
|
||||
ASSERT_EQ (rai::genesis_amount - rai::Gxrb_ratio, ledger.weight (transaction, rai::genesis_account));
|
||||
rai::utx_block receive1 (rai::genesis_account, send1.hash (), rai::genesis_account, rai::genesis_amount, 1, rai::test_genesis_key.prv, rai::test_genesis_key.pub, 0);
|
||||
ASSERT_EQ (rai::process_result::unreceivable, ledger.process (transaction, receive1).code);
|
||||
ASSERT_EQ (rai::process_result::gap_source, ledger.process (transaction, receive1).code);
|
||||
}
|
||||
|
||||
TEST (ledger, utx_receive_bad_amount_fail)
|
||||
|
|
|
@ -212,12 +212,16 @@ void ledger_processor::utx_block (rai::utx_block const & block_a)
|
|||
{
|
||||
if (!block_a.hashables.link.is_zero ())
|
||||
{
|
||||
rai::pending_key key (block_a.hashables.account, block_a.hashables.link);
|
||||
rai::pending_info pending;
|
||||
result.code = ledger.store.pending_get (transaction, key, pending) ? rai::process_result::unreceivable : rai::process_result::progress; // Has this source already been received (Malformed)
|
||||
result.code = ledger.store.block_exists (transaction, block_a.hashables.link) ? rai::process_result::progress : rai::process_result::gap_source; // Have we seen the source block already? (Harmless)
|
||||
if (result.code == rai::process_result::progress)
|
||||
{
|
||||
result.code = result.amount == pending.amount ? rai::process_result::progress : rai::process_result::balance_mismatch;
|
||||
rai::pending_key key (block_a.hashables.account, block_a.hashables.link);
|
||||
rai::pending_info pending;
|
||||
result.code = ledger.store.pending_get (transaction, key, pending) ? rai::process_result::unreceivable : rai::process_result::progress; // Has this source already been received (Malformed)
|
||||
if (result.code == rai::process_result::progress)
|
||||
{
|
||||
result.code = result.amount == pending.amount ? rai::process_result::progress : rai::process_result::balance_mismatch;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue