aboutsummaryrefslogtreecommitdiffstats
path: root/peer.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-10-17 23:11:34 +0800
committerobscuren <geffobscura@gmail.com>2014-10-17 23:11:34 +0800
commitd7736a7bbbf3d832dd108253fa5dea1de2cb9363 (patch)
treebd7f8f47b69c6ef7da4f163ef9b4e41f0687f11a /peer.go
parentdf2b70853ff0764c4fcb181547eee3a66f7bda4a (diff)
downloaddexon-d7736a7bbbf3d832dd108253fa5dea1de2cb9363.tar
dexon-d7736a7bbbf3d832dd108253fa5dea1de2cb9363.tar.gz
dexon-d7736a7bbbf3d832dd108253fa5dea1de2cb9363.tar.bz2
dexon-d7736a7bbbf3d832dd108253fa5dea1de2cb9363.tar.lz
dexon-d7736a7bbbf3d832dd108253fa5dea1de2cb9363.tar.xz
dexon-d7736a7bbbf3d832dd108253fa5dea1de2cb9363.tar.zst
dexon-d7736a7bbbf3d832dd108253fa5dea1de2cb9363.zip
Quick dirty peer update
Diffstat (limited to 'peer.go')
-rw-r--r--peer.go38
1 files changed, 23 insertions, 15 deletions
diff --git a/peer.go b/peer.go
index d66d082bb..52eb20cfc 100644
--- a/peer.go
+++ b/peer.go
@@ -24,9 +24,9 @@ const (
// The size of the output buffer for writing messages
outputBufferSize = 50
// Current protocol version
- ProtocolVersion = 34
+ ProtocolVersion = 35
// Current P2P version
- P2PVersion = 0
+ P2PVersion = 2
// Ethereum network version
NetVersion = 0
// Interval for ping/pong message
@@ -434,7 +434,7 @@ func (p *Peer) HandleInbound() {
}
case ethwire.MsgGetPeersTy:
// Peer asked for list of connected peers
- p.pushPeers()
+ //p.pushPeers()
case ethwire.MsgPeersTy:
// Received a list of peers (probably because MsgGetPeersTy was send)
data := msg.Data
@@ -672,7 +672,7 @@ func (p *Peer) pushPeers() {
func (self *Peer) pushStatus() {
msg := ethwire.NewMessage(ethwire.MsgStatusTy, []interface{}{
- uint32(ProtocolVersion),
+ //uint32(ProtocolVersion),
uint32(NetVersion),
self.ethereum.BlockChain().TD,
self.ethereum.BlockChain().CurrentBlock.Hash(),
@@ -686,11 +686,11 @@ func (self *Peer) handleStatus(msg *ethwire.Msg) {
c := msg.Data
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()
+ //protoVersion = c.Get(0).Uint()
+ netVersion = c.Get(0).Uint()
+ td = c.Get(1).BigInt()
+ bestHash = c.Get(2).Bytes()
+ genesis = c.Get(3).Bytes()
)
if bytes.Compare(self.ethereum.BlockChain().Genesis().Hash(), genesis) != 0 {
@@ -703,10 +703,12 @@ func (self *Peer) handleStatus(msg *ethwire.Msg) {
return
}
- if protoVersion != ProtocolVersion {
- ethlogger.Warnf("Invalid protocol version %d. Disabling [eth]\n", protoVersion)
- return
- }
+ /*
+ if protoVersion != ProtocolVersion {
+ ethlogger.Warnf("Invalid protocol version %d. Disabling [eth]\n", protoVersion)
+ return
+ }
+ */
// Get the td and last hash
self.td = td
@@ -719,14 +721,14 @@ func (self *Peer) handleStatus(msg *ethwire.Msg) {
// fetch hashes from highest TD node.
self.FetchHashes()
- ethlogger.Infof("Peer is [eth] capable. (TD = %v ~ %x) %d / %d", self.td, self.bestHash, protoVersion, netVersion)
+ ethlogger.Infof("Peer is [eth] capable. (TD = %v ~ %x)", self.td, self.bestHash)
}
func (p *Peer) pushHandshake() error {
pubkey := p.ethereum.KeyManager().PublicKey()
msg := ethwire.NewMessage(ethwire.MsgHandshakeTy, []interface{}{
- P2PVersion, []byte(p.version), []interface{}{"eth"}, p.port, pubkey[1:],
+ P2PVersion, []byte(p.version), []interface{}{"eth", ProtocolVersion}, p.port, pubkey[1:],
})
p.QueueMessage(msg)
@@ -811,6 +813,12 @@ func (p *Peer) handleHandshake(msg *ethwire.Msg) {
cap := capsIt.Value().Str()
switch cap {
case "eth":
+ capsIt.Next()
+ version := capsIt.Value().Uint()
+ if version != ProtocolVersion {
+ ethlogger.Warnf("Invalid protocol version %d. Disabling [eth]\n", version)
+ continue
+ }
p.pushStatus()
}