Support C++ GetBlockHash by assuming empty = done

This commit is contained in:
obscuren 2014-09-22 16:28:28 +02:00
parent b65f29f8fa
commit 9ed5b4d90e

26
peer.go

@ -362,22 +362,24 @@ clean:
} }
func formatMessage(msg *ethwire.Msg) (ret string) { func formatMessage(msg *ethwire.Msg) (ret string) {
ret = fmt.Sprintf("%v ", msg.Type) ret = fmt.Sprintf("%v %v", msg.Type, msg.Data)
/* /*
XXX Commented out because I need the log level here to determine XXX Commented out because I need the log level here to determine
if i should or shouldn't generate this message if i should or shouldn't generate this message
*/ */
switch msg.Type { /*
case ethwire.MsgPeersTy: switch msg.Type {
ret += fmt.Sprintf("(%d entries)", msg.Data.Len()) case ethwire.MsgPeersTy:
case ethwire.MsgBlockTy: ret += fmt.Sprintf("(%d entries)", msg.Data.Len())
b1, b2 := ethchain.NewBlockFromRlpValue(msg.Data.Get(0)), ethchain.NewBlockFromRlpValue(msg.Data.Get(msg.Data.Len()-1)) case ethwire.MsgBlockTy:
ret += fmt.Sprintf("(%d entries) %x - %x", msg.Data.Len(), b1.Hash()[0:4], b2.Hash()[0:4]) b1, b2 := ethchain.NewBlockFromRlpValue(msg.Data.Get(0)), ethchain.NewBlockFromRlpValue(msg.Data.Get(msg.Data.Len()-1))
case ethwire.MsgBlockHashesTy: ret += fmt.Sprintf("(%d entries) %x - %x", msg.Data.Len(), b1.Hash()[0:4], b2.Hash()[0:4])
h1, h2 := msg.Data.Get(0).Bytes(), msg.Data.Get(msg.Data.Len()-1).Bytes() case ethwire.MsgBlockHashesTy:
ret += fmt.Sprintf("(%d entries) %x - %x", msg.Data.Len(), h1[0:4], h2[0:4]) h1, h2 := msg.Data.Get(0).Bytes(), msg.Data.Get(msg.Data.Len()-1).Bytes()
} ret += fmt.Sprintf("(%d entries) %x - %x", msg.Data.Len(), h1, h2)
}
*/
return return
} }
@ -512,7 +514,7 @@ func (p *Peer) HandleInbound() {
p.lastBlockReceived = time.Now() p.lastBlockReceived = time.Now()
} }
if foundCommonHash { if foundCommonHash || msg.Data.Len() == 0 {
p.FetchBlocks() p.FetchBlocks()
} else { } else {
p.FetchHashes() p.FetchHashes()