Support gap_source for ublocks (#695)

This commit is contained in:
Lee Bousfield 2018-03-07 16:40:14 -07:00 committed by clemahieu
commit fbaf67ac68
2 changed files with 9 additions and 5 deletions

View file

@ -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)

View file

@ -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