mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-02-26 15:47:21 +00:00
core: added a test for missing nonces
This test showed the logic in the queue was slightly flawed sending out transactions to its peer it couldn't even resolve itself.
This commit is contained in:
parent
55b7c14554
commit
5245bd7b20
2 changed files with 24 additions and 1 deletions
|
|
@ -331,7 +331,7 @@ func (pool *TxPool) checkQueue() {
|
|||
// current account nonce.
|
||||
sort.Sort(addq)
|
||||
for _, e := range addq {
|
||||
if e.AccountNonce > curnonce+1 {
|
||||
if e.AccountNonce > curnonce {
|
||||
break
|
||||
}
|
||||
delete(txs, e.hash)
|
||||
|
|
|
|||
|
|
@ -201,3 +201,26 @@ func TestTransactionDoubleNonce(t *testing.T) {
|
|||
t.Error("expected 2 pending txs. Got", len(pool.pending))
|
||||
}
|
||||
}
|
||||
|
||||
func TestMissingNonce(t *testing.T) {
|
||||
pool, key := setupTxPool()
|
||||
addr := crypto.PubkeyToAddress(key.PublicKey)
|
||||
pool.currentState().AddBalance(addr, big.NewInt(100000000000000))
|
||||
tx := transaction()
|
||||
tx.AccountNonce = 1
|
||||
tx.GasLimit = big.NewInt(100000)
|
||||
tx.SignECDSA(key)
|
||||
|
||||
err := pool.add(tx)
|
||||
if err != nil {
|
||||
t.Error("didn't expect error", err)
|
||||
}
|
||||
|
||||
if len(pool.pending) != 0 {
|
||||
t.Error("expected 0 pending transactions, got", len(pool.pending))
|
||||
}
|
||||
|
||||
if len(pool.queue[addr]) != 1 {
|
||||
t.Error("expected 1 queued transaction, got", len(pool.queue[addr]))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue