mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-01 12:38:40 +00:00
Merge 8dce444578 into 12eabbd76d
This commit is contained in:
commit
326c8f9dfc
2 changed files with 12 additions and 6 deletions
|
|
@ -872,8 +872,14 @@ func (s *skeleton) executeTask(peer *peerConnection, req *headerRequest) {
|
||||||
|
|
||||||
case headers[0].Number.Uint64() != req.head:
|
case headers[0].Number.Uint64() != req.head:
|
||||||
// Header batch anchored at non-requested number
|
// Header batch anchored at non-requested number
|
||||||
peer.log.Debug("Invalid header response head", "have", headers[0].Number, "want", req.head)
|
if peerHeader := headers[0].Number.Uint64(); peerHeader > req.head {
|
||||||
res.Done <- errors.New("invalid header batch anchor")
|
peer.log.Debug("Invalid header response head", "have", peerHeader, "want", req.head)
|
||||||
|
res.Done <- errors.New("invalid header batch anchor")
|
||||||
|
} else {
|
||||||
|
peer.log.Debug("Peer behind requested head, rescheduling", "have", peerHeader, "want", req.head)
|
||||||
|
// Do not penalize the peer if it is behind our requested head
|
||||||
|
res.Done <- nil
|
||||||
|
}
|
||||||
s.scheduleRevertRequest(req)
|
s.scheduleRevertRequest(req)
|
||||||
|
|
||||||
case req.head >= requestHeaders && len(headers) != requestHeaders:
|
case req.head >= requestHeaders && len(headers) != requestHeaders:
|
||||||
|
|
|
||||||
|
|
@ -616,14 +616,14 @@ func TestSkeletonSyncRetrievals(t *testing.T) {
|
||||||
mid: skeletonExpect{
|
mid: skeletonExpect{
|
||||||
state: []*subchain{{Head: requestHeaders + 100, Tail: 100}},
|
state: []*subchain{{Head: requestHeaders + 100, Tail: 100}},
|
||||||
serve: requestHeaders + 101 - 3, // len - head - genesis - missing
|
serve: requestHeaders + 101 - 3, // len - head - genesis - missing
|
||||||
drop: 1, // penalize shortened header deliveries
|
drop: 0, // do not penalize in relaxed mode
|
||||||
},
|
},
|
||||||
|
|
||||||
newPeer: newSkeletonTestPeer("good-peer", chain),
|
newPeer: newSkeletonTestPeer("good-peer", chain),
|
||||||
end: skeletonExpect{
|
end: skeletonExpect{
|
||||||
state: []*subchain{{Head: requestHeaders + 100, Tail: 1}},
|
state: []*subchain{{Head: requestHeaders + 100, Tail: 1}},
|
||||||
serve: (requestHeaders + 101 - 3) + (100 - 1), // midserve + lenrest - genesis
|
serve: (requestHeaders + 101 - 3) + (100 - 1), // midserve + lenrest - genesis
|
||||||
drop: 1, // no new drops
|
drop: 0, // relaxed: no drops
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// This test checks if a peer tries to withhold a header - *off* the sync
|
// This test checks if a peer tries to withhold a header - *off* the sync
|
||||||
|
|
@ -662,14 +662,14 @@ func TestSkeletonSyncRetrievals(t *testing.T) {
|
||||||
mid: skeletonExpect{
|
mid: skeletonExpect{
|
||||||
state: []*subchain{{Head: requestHeaders + 100, Tail: 100}},
|
state: []*subchain{{Head: requestHeaders + 100, Tail: 100}},
|
||||||
serve: requestHeaders + 101 - 2, // len - head - genesis
|
serve: requestHeaders + 101 - 2, // len - head - genesis
|
||||||
drop: 1, // penalize invalid header sequences
|
drop: 0, // do not penalize in relaxed mode
|
||||||
},
|
},
|
||||||
|
|
||||||
newPeer: newSkeletonTestPeer("good-peer", chain),
|
newPeer: newSkeletonTestPeer("good-peer", chain),
|
||||||
end: skeletonExpect{
|
end: skeletonExpect{
|
||||||
state: []*subchain{{Head: requestHeaders + 100, Tail: 1}},
|
state: []*subchain{{Head: requestHeaders + 100, Tail: 1}},
|
||||||
serve: (requestHeaders + 101 - 2) + (100 - 1), // midserve + lenrest - genesis
|
serve: (requestHeaders + 101 - 2) + (100 - 1), // midserve + lenrest - genesis
|
||||||
drop: 1, // no new drops
|
drop: 0, // relaxed: no drops
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// This test checks if a peer tries to duplicate a header - *off* the sync
|
// This test checks if a peer tries to duplicate a header - *off* the sync
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue