eth: fix #2076, where end of hash query was interpreted number query

This commit is contained in:
Péter Szilágyi
2015-12-15 19:22:48 +02:00
parent b9aedeab0b
commit e51eeb8104
2 changed files with 23 additions and 1 deletions

View File

@ -372,6 +372,8 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
if err := msg.Decode(&query); err != nil {
return errResp(ErrDecode, "%v: %v", msg, err)
}
hashMode := query.Origin.Hash != (common.Hash{})
// Gather headers until the fetch or network limits is reached
var (
bytes common.StorageSize
@ -381,7 +383,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
for !unknown && len(headers) < int(query.Amount) && bytes < softResponseLimit && len(headers) < downloader.MaxHeaderFetch {
// Retrieve the next header satisfying the query
var origin *types.Header
if query.Origin.Hash != (common.Hash{}) {
if hashMode {
origin = pm.blockchain.GetHeader(query.Origin.Hash)
} else {
origin = pm.blockchain.GetHeaderByNumber(query.Origin.Number)