forked from cerc-io/plugeth
Self connect on handshake
This commit is contained in:
parent
0de31a3898
commit
c00b1dd508
19
peer.go
19
peer.go
@ -128,7 +128,8 @@ func NewPeer(conn net.Conn, ethereum *Ethereum, inbound bool) *Peer {
|
||||
}
|
||||
|
||||
func NewOutboundPeer(addr string, ethereum *Ethereum, caps Caps) *Peer {
|
||||
pubkey, _ := ethutil.Config.Db.Get([]byte("Pubkey"))
|
||||
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
|
||||
pubkey := ethutil.NewValueFromBytes(data).Get(2).Bytes()
|
||||
|
||||
p := &Peer{
|
||||
outputQueue: make(chan *ethwire.Msg, outputBufferSize),
|
||||
@ -382,14 +383,6 @@ func (p *Peer) Start() {
|
||||
peerHost, peerPort, _ := net.SplitHostPort(p.conn.LocalAddr().String())
|
||||
servHost, servPort, _ := net.SplitHostPort(p.conn.RemoteAddr().String())
|
||||
|
||||
pubkey, _ := ethutil.Config.Db.Get([]byte("Pubkey"))
|
||||
if bytes.Compare(pubkey, p.pubkey) == 0 {
|
||||
log.Println("self connect")
|
||||
p.Stop()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
if p.inbound {
|
||||
p.host, p.port = packAddr(peerHost, peerPort)
|
||||
} else {
|
||||
@ -468,6 +461,14 @@ func (p *Peer) handleHandshake(msg *ethwire.Msg) {
|
||||
p.pubkey = c.Get(3).AsBytes()
|
||||
p.port = uint16(c.Get(5).AsUint())
|
||||
|
||||
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
|
||||
pubkey := ethutil.NewValueFromBytes(data).Get(2).Bytes()
|
||||
if bytes.Compare(pubkey, p.pubkey) == 0 {
|
||||
p.Stop()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
istr = "inbound"
|
||||
} else {
|
||||
msg := ethwire.NewMessage(ethwire.MsgGetChainTy, []interface{}{p.ethereum.BlockManager.BlockChain().CurrentBlock.Hash(), uint64(100)})
|
||||
|
Loading…
Reference in New Issue
Block a user