aboutsummaryrefslogtreecommitdiffstats
path: root/eth/protocol.go
diff options
context:
space:
mode:
Diffstat (limited to 'eth/protocol.go')
-rw-r--r--eth/protocol.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/eth/protocol.go b/eth/protocol.go
index e32ea233b..0a3f67b62 100644
--- a/eth/protocol.go
+++ b/eth/protocol.go
@@ -105,7 +105,7 @@ type getBlockHashesMsgData struct {
type statusMsgData struct {
ProtocolVersion uint32
NetworkId uint32
- TD *big.Int
+ TD big.Int
CurrentBlock common.Hash
GenesisBlock common.Hash
}
@@ -276,6 +276,9 @@ func (self *ethProtocol) handle() error {
if err := msg.Decode(&request); err != nil {
return self.protoError(ErrDecode, "%v: %v", msg, err)
}
+ if err := request.Block.Validate(); err != nil {
+ return self.protoError(ErrDecode, "block validation %v: %v", msg, err)
+ }
hash := request.Block.Hash()
_, chainHead, _ := self.chainManager.Status()
@@ -335,7 +338,7 @@ func (self *ethProtocol) handleStatus() error {
return self.protoError(ErrProtocolVersionMismatch, "%d (!= %d)", status.ProtocolVersion, self.protocolVersion)
}
- _, suspended := self.blockPool.AddPeer(status.TD, status.CurrentBlock, self.id, self.requestBlockHashes, self.requestBlocks, self.protoErrorDisconnect)
+ _, suspended := self.blockPool.AddPeer(&status.TD, status.CurrentBlock, self.id, self.requestBlockHashes, self.requestBlocks, self.protoErrorDisconnect)
if suspended {
return self.protoError(ErrSuspendedPeer, "")
}
@@ -366,7 +369,7 @@ func (self *ethProtocol) sendStatus() error {
return p2p.Send(self.rw, StatusMsg, &statusMsgData{
ProtocolVersion: uint32(self.protocolVersion),
NetworkId: uint32(self.networkId),
- TD: td,
+ TD: *td,
CurrentBlock: currentBlock,
GenesisBlock: genesisBlock,
})