return nil, errNoMainSkeleton
}
- if len(mainSkeleton) < minSizeOfSyncSkeleton || len(mainSkeleton) > maxSizeOfSyncSkeleton {
+ if len(mainSkeleton) < minSizeOfSyncSkeleton {
fs.peers.ProcessIllegal(fs.mainSyncPeer.ID(), security.LevelMsgIllegal, errSkeletonSize.Error())
return nil, errSkeletonSize
}
blockFetchTasks := make([]*fetchBlocksWork, 0)
// create download task
- for i := 0; i < len(mainSkeleton)-1; i++ {
+ for i := 0; i < len(mainSkeleton)-1 && i < maxSizeOfSyncSkeleton-1; i++ {
blockFetchTasks = append(blockFetchTasks, &fetchBlocksWork{startHeader: mainSkeleton[i], stopHeader: mainSkeleton[i+1]})
}
}()
baseChain := mockBlocks(nil, 300)
-
+ chainX := []*types.Block{}
+ chainX = append(chainX, baseChain[:30]...)
+ chainX = append(chainX, mockBlocks(baseChain[30], 500)...)
cases := []struct {
syncTimeout time.Duration
aBlocks []*types.Block
want: baseChain[:50],
err: errSkeletonSize,
},
+ {
+ syncTimeout: 30 * time.Second,
+ aBlocks: chainX[:50],
+ bBlocks: baseChain[:301],
+ want: baseChain[:128],
+ err: nil,
+ },
}
for i, c := range cases {