@ -492,15 +492,6 @@ func (d *Downloader) fetchHeight61(p *peer) (uint64, error) {
case <- d . cancelCh :
return 0 , errCancelBlockFetch
case <- d . headerCh :
// Out of bounds eth/62 block headers received, ignore them
case <- d . bodyCh :
// Out of bounds eth/62 block bodies received, ignore them
case <- d . hashCh :
// Out of bounds hashes received, ignore them
case packet := <- d . blockCh :
// Discard anything not from the origin peer
if packet . PeerId ( ) != p . id {
@ -518,6 +509,16 @@ func (d *Downloader) fetchHeight61(p *peer) (uint64, error) {
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: head block timeout" , p )
return 0 , errTimeout
case <- d . hashCh :
// Out of bounds hashes received, ignore them
case <- d . headerCh :
case <- d . bodyCh :
case <- d . stateCh :
case <- d . receiptCh :
// Ignore eth/{62,63} packets because this is eth/61.
// These can arrive as a late delivery from a previous sync.
}
}
}
@ -568,18 +569,19 @@ func (d *Downloader) findAncestor61(p *peer) (uint64, error) {
}
}
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: head hash timeout" , p )
return 0 , errTimeout
case <- d . blockCh :
// Out of bounds blocks received, ignore them
case <- d . headerCh :
// Out of bounds eth/62 block headers received, ignore them
case <- d . bodyCh :
// Out of bounds eth/62 block bodies received, ignore them
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: head hash timeout" , p )
return 0 , errTimeout
case <- d . stateCh :
case <- d . receiptCh :
// Ignore eth/{62,63} packets because this is eth/61.
// These can arrive as a late delivery from a previous sync.
}
}
// If the head fetch already found an ancestor, return
@ -628,18 +630,19 @@ func (d *Downloader) findAncestor61(p *peer) (uint64, error) {
}
start = check
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: search hash timeout" , p )
return 0 , errTimeout
case <- d . blockCh :
// Out of bounds blocks received, ignore them
case <- d . headerCh :
// Out of bounds eth/62 block headers received, ignore them
case <- d . bodyCh :
// Out of bounds eth/62 block bodies received, ignore them
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: search hash timeout" , p )
return 0 , errTimeout
case <- d . stateCh :
case <- d . receiptCh :
// Ignore eth/{62,63} packets because this is eth/61.
// These can arrive as a late delivery from a previous sync.
}
}
}
@ -673,12 +676,6 @@ func (d *Downloader) fetchHashes61(p *peer, td *big.Int, from uint64) error {
case <- d . cancelCh :
return errCancelHashFetch
case <- d . headerCh :
// Out of bounds eth/62 block headers received, ignore them
case <- d . bodyCh :
// Out of bounds eth/62 block bodies received, ignore them
case packet := <- d . hashCh :
// Make sure the active peer is giving us the hashes
if packet . PeerId ( ) != p . id {
@ -747,6 +744,13 @@ func (d *Downloader) fetchHashes61(p *peer, td *big.Int, from uint64) error {
glog . V ( logger . Debug ) . Infof ( "%v: hash request timed out" , p )
hashTimeoutMeter . Mark ( 1 )
return errTimeout
case <- d . headerCh :
case <- d . bodyCh :
case <- d . stateCh :
case <- d . receiptCh :
// Ignore eth/{62,63} packets because this is eth/61.
// These can arrive as a late delivery from a previous sync.
}
}
}
@ -771,12 +775,6 @@ func (d *Downloader) fetchBlocks61(from uint64) error {
case <- d . cancelCh :
return errCancelBlockFetch
case <- d . headerCh :
// Out of bounds eth/62 block headers received, ignore them
case <- d . bodyCh :
// Out of bounds eth/62 block bodies received, ignore them
case packet := <- d . blockCh :
// If the peer was previously banned and failed to deliver it's pack
// in a reasonable time frame, ignore it's message.
@ -904,6 +902,13 @@ func (d *Downloader) fetchBlocks61(from uint64) error {
if ! throttled && ! d . queue . InFlightBlocks ( ) && len ( idles ) == total {
return errPeersUnavailable
}
case <- d . headerCh :
case <- d . bodyCh :
case <- d . stateCh :
case <- d . receiptCh :
// Ignore eth/{62,63} packets because this is eth/61.
// These can arrive as a late delivery from a previous sync.
}
}
}
@ -936,18 +941,19 @@ func (d *Downloader) fetchHeight(p *peer) (uint64, error) {
}
return headers [ 0 ] . Number . Uint64 ( ) , nil
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: head header timeout" , p )
return 0 , errTimeout
case <- d . bodyCh :
// Out of bounds block bodies received, ignore them
case <- d . stateCh :
case <- d . receiptCh :
// Out of bounds delivery, ignore
case <- d . hashCh :
// Out of bounds eth/61 hashes received, ignore them
case <- d . blockCh :
// Out of bounds eth/61 blocks received, ignore them
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: head header timeout" , p )
return 0 , errTimeout
// Ignore eth/61 packets because this is eth/62+.
// These can arrive as a late delivery from a previous sync.
}
}
}
@ -1003,18 +1009,19 @@ func (d *Downloader) findAncestor(p *peer) (uint64, error) {
}
}
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: head header timeout" , p )
return 0 , errTimeout
case <- d . bodyCh :
// Out of bounds block bodies received, ignore them
case <- d . stateCh :
case <- d . receiptCh :
// Out of bounds delivery, ignore
case <- d . hashCh :
// Out of bounds eth/61 hashes received, ignore them
case <- d . blockCh :
// Out of bounds eth/61 blocks received, ignore them
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: head header timeout" , p )
return 0 , errTimeout
// Ignore eth/61 packets because this is eth/62+.
// These can arrive as a late delivery from a previous sync.
}
}
// If the head fetch already found an ancestor, return
@ -1063,18 +1070,19 @@ func (d *Downloader) findAncestor(p *peer) (uint64, error) {
}
start = check
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: search header timeout" , p )
return 0 , errTimeout
case <- d . bodyCh :
// Out of bounds block bodies received, ignore them
case <- d . stateCh :
case <- d . receiptCh :
// Out of bounds delivery, ignore
case <- d . hashCh :
// Out of bounds eth/61 hashes received, ignore them
case <- d . blockCh :
// Out of bounds eth/61 blocks received, ignore them
case <- timeout :
glog . V ( logger . Debug ) . Infof ( "%v: search header timeout" , p )
return 0 , errTimeout
// Ignore eth/61 packets because this is eth/62+.
// These can arrive as a late delivery from a previous sync.
}
}
}
@ -1136,12 +1144,6 @@ func (d *Downloader) fetchHeaders(p *peer, td *big.Int, from uint64) error {
case <- d . cancelCh :
return errCancelHeaderFetch
case <- d . hashCh :
// Out of bounds eth/61 hashes received, ignore them
case <- d . blockCh :
// Out of bounds eth/61 blocks received, ignore them
case packet := <- d . headerCh :
// Make sure the active peer is giving us the headers
if packet . PeerId ( ) != p . id {
@ -1263,6 +1265,11 @@ func (d *Downloader) fetchHeaders(p *peer, td *big.Int, from uint64) error {
}
}
return nil
case <- d . hashCh :
case <- d . blockCh :
// Ignore eth/61 packets because this is eth/62+.
// These can arrive as a late delivery from a previous sync.
}
}
}
@ -1383,12 +1390,6 @@ func (d *Downloader) fetchParts(errCancel error, deliveryCh chan dataPack, deliv
case <- d . cancelCh :
return errCancel
case <- d . hashCh :
// Out of bounds eth/61 hashes received, ignore them
case <- d . blockCh :
// Out of bounds eth/61 blocks received, ignore them
case packet := <- deliveryCh :
// If the peer was previously banned and failed to deliver it's pack
// in a reasonable time frame, ignore it's message.
@ -1529,6 +1530,11 @@ func (d *Downloader) fetchParts(errCancel error, deliveryCh chan dataPack, deliv
if ! progressed && ! throttled && ! running && len ( idles ) == total && pending ( ) > 0 {
return errPeersUnavailable
}
case <- d . hashCh :
case <- d . blockCh :
// Ignore eth/61 packets because this is eth/62+.
// These can arrive as a late delivery from a previous sync.
}
}
}