fixed status message

This commit is contained in:
obscuren 2014-09-14 14:09:46 +02:00
parent 742a9b00bc
commit 86d1a26b13
1 changed files with 19 additions and 9 deletions

28
peer.go
View File

@ -634,8 +634,8 @@ func (self *Peer) pushStatus() {
const netVersion = 0 const netVersion = 0
msg := ethwire.NewMessage(ethwire.MsgStatusTy, []interface{}{ msg := ethwire.NewMessage(ethwire.MsgStatusTy, []interface{}{
uint32(ProtocolVersion), uint32(ProtocolVersion),
netVersion, uint32(netVersion),
self.ethereum.BlockChain().TD.Uint64(), self.ethereum.BlockChain().TD,
self.ethereum.BlockChain().CurrentBlock.Hash(), self.ethereum.BlockChain().CurrentBlock.Hash(),
self.ethereum.BlockChain().Genesis().Hash(), self.ethereum.BlockChain().Genesis().Hash(),
}) })
@ -645,13 +645,22 @@ func (self *Peer) pushStatus() {
func (self *Peer) handleStatus(msg *ethwire.Msg) { func (self *Peer) handleStatus(msg *ethwire.Msg) {
c := msg.Data c := msg.Data
// Set the peer's caps
//p.caps = Caps(c.Get(3).Byte()) var (
protoVersion = c.Get(0).Uint()
netVersion = c.Get(1).Uint()
td = c.Get(2).BigInt()
bestHash = c.Get(3).Bytes()
genesis = c.Get(4).Bytes()
)
ethlogger.Infof("gen = %x\n", genesis)
// Get the td and last hash // Get the td and last hash
self.td = c.Get(6).BigInt() self.td = td
self.bestHash = c.Get(7).Bytes() self.bestHash = bestHash
self.lastReceivedHash = self.bestHash self.lastReceivedHash = bestHash
self.statusKnown = true
// Compare the total TD with the blockchain TD. If remote is higher // Compare the total TD with the blockchain TD. If remote is higher
// fetch hashes from highest TD node. // fetch hashes from highest TD node.
@ -660,13 +669,14 @@ func (self *Peer) handleStatus(msg *ethwire.Msg) {
self.FetchHashes() self.FetchHashes()
} }
ethlogger.Infof("Peer is [ETH] capable. (TD = %v ~ %x", self.td, self.bestHash) ethlogger.Infof("Peer is [ETH] capable. (TD = %v ~ %x) %d / %d", self.td, self.bestHash, protoVersion, netVersion)
} }
func (p *Peer) pushHandshake() error { func (p *Peer) pushHandshake() error {
pubkey := p.ethereum.KeyManager().PublicKey() pubkey := p.ethereum.KeyManager().PublicKey()
msg := ethwire.NewMessage(ethwire.MsgHandshakeTy, []interface{}{ msg := ethwire.NewMessage(ethwire.MsgHandshakeTy, []interface{}{
uint32(0), []byte(p.version), []string{"eth"}, uint32(30303) /*p.port*/, pubkey[1:], P2PVersion, []byte(p.version), []interface{}{"eth"}, uint32(30303) /*p.port*/, pubkey[1:],
}) })
p.QueueMessage(msg) p.QueueMessage(msg)