On negotiation check only blocks in future of PP

This commit is contained in:
Ori Newman 2022-11-29 13:48:51 +02:00
parent a9e4fabeed
commit 88ecede2ae

View File

@ -175,6 +175,11 @@ func (flow *handleIBDFlow) negotiateMissingSyncerChainSegment() (*externalapi.Do
chainNegotiationRestartCounter := 0 chainNegotiationRestartCounter := 0
chainNegotiationZoomCounts := 0 chainNegotiationZoomCounts := 0
initialLocatorLen := len(locatorHashes) initialLocatorLen := len(locatorHashes)
pruningPoint, err := flow.Domain().Consensus().PruningPoint()
if err != nil {
return nil, nil, err
}
for { for {
var lowestUnknownSyncerChainHash, currentHighestKnownSyncerChainHash *externalapi.DomainHash var lowestUnknownSyncerChainHash, currentHighestKnownSyncerChainHash *externalapi.DomainHash
for _, syncerChainHash := range locatorHashes { for _, syncerChainHash := range locatorHashes {
@ -187,8 +192,15 @@ func (flow *handleIBDFlow) negotiateMissingSyncerChainSegment() (*externalapi.Do
return nil, nil, protocolerrors.Errorf(true, "Sent invalid chain block %s", syncerChainHash) return nil, nil, protocolerrors.Errorf(true, "Sent invalid chain block %s", syncerChainHash)
} }
currentHighestKnownSyncerChainHash = syncerChainHash isInSelectedParentChainOfPruningPoint, err := flow.Domain().Consensus().IsInSelectedParentChainOf(pruningPoint, syncerChainHash)
break if err != nil {
return nil, nil, err
}
if isInSelectedParentChainOfPruningPoint {
currentHighestKnownSyncerChainHash = syncerChainHash
break
}
} }
lowestUnknownSyncerChainHash = syncerChainHash lowestUnknownSyncerChainHash = syncerChainHash
} }