eth/fetcher: relax eth/68 validation a bit for flakey clients

This commit is contained in:
Péter Szilágyi 2023-10-05 19:33:18 +03:00
parent 3c6a45e537
commit 4a0d6cac97

View file

@ -20,6 +20,7 @@ import (
"bytes" "bytes"
"errors" "errors"
"fmt" "fmt"
"math"
mrand "math/rand" mrand "math/rand"
"sort" "sort"
"time" "time"
@ -581,7 +582,14 @@ func (f *TxFetcher) loop() {
f.dropPeer(peer) f.dropPeer(peer)
} else if delivery.metas[i].size != meta.size { } else if delivery.metas[i].size != meta.size {
log.Warn("Announced transaction size mismatch", "peer", peer, "tx", hash, "size", delivery.metas[i].size, "ann", meta.size) log.Warn("Announced transaction size mismatch", "peer", peer, "tx", hash, "size", delivery.metas[i].size, "ann", meta.size)
f.dropPeer(peer) if math.Abs(float64(delivery.metas[i].size)-float64(meta.size)) > 8 {
// Normally we should drop a peer considering this is a protocol violation.
// However, due to the RLP vs consensus format messyness, allow a few bytes
// wiggle-room where we only warn, but don't drop.
//
// TODO(karalabe): Get rid of this relaxation when clients are proven stable.
f.dropPeer(peer)
}
} }
} }
delete(txset, hash) delete(txset, hash)
@ -599,7 +607,14 @@ func (f *TxFetcher) loop() {
f.dropPeer(peer) f.dropPeer(peer)
} else if delivery.metas[i].size != meta.size { } else if delivery.metas[i].size != meta.size {
log.Warn("Announced transaction size mismatch", "peer", peer, "tx", hash, "size", delivery.metas[i].size, "ann", meta.size) log.Warn("Announced transaction size mismatch", "peer", peer, "tx", hash, "size", delivery.metas[i].size, "ann", meta.size)
f.dropPeer(peer) if math.Abs(float64(delivery.metas[i].size)-float64(meta.size)) > 8 {
// Normally we should drop a peer considering this is a protocol violation.
// However, due to the RLP vs consensus format messyness, allow a few bytes
// wiggle-room where we only warn, but don't drop.
//
// TODO(karalabe): Get rid of this relaxation when clients are proven stable.
f.dropPeer(peer)
}
} }
} }
delete(txset, hash) delete(txset, hash)