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 {
|
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{
|
p := &Peer{
|
||||||
outputQueue: make(chan *ethwire.Msg, outputBufferSize),
|
outputQueue: make(chan *ethwire.Msg, outputBufferSize),
|
||||||
@ -382,14 +383,6 @@ func (p *Peer) Start() {
|
|||||||
peerHost, peerPort, _ := net.SplitHostPort(p.conn.LocalAddr().String())
|
peerHost, peerPort, _ := net.SplitHostPort(p.conn.LocalAddr().String())
|
||||||
servHost, servPort, _ := net.SplitHostPort(p.conn.RemoteAddr().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 {
|
if p.inbound {
|
||||||
p.host, p.port = packAddr(peerHost, peerPort)
|
p.host, p.port = packAddr(peerHost, peerPort)
|
||||||
} else {
|
} else {
|
||||||
@ -468,6 +461,14 @@ func (p *Peer) handleHandshake(msg *ethwire.Msg) {
|
|||||||
p.pubkey = c.Get(3).AsBytes()
|
p.pubkey = c.Get(3).AsBytes()
|
||||||
p.port = uint16(c.Get(5).AsUint())
|
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"
|
istr = "inbound"
|
||||||
} else {
|
} else {
|
||||||
msg := ethwire.NewMessage(ethwire.MsgGetChainTy, []interface{}{p.ethereum.BlockManager.BlockChain().CurrentBlock.Hash(), uint64(100)})
|
msg := ethwire.NewMessage(ethwire.MsgGetChainTy, []interface{}{p.ethereum.BlockManager.BlockChain().CurrentBlock.Hash(), uint64(100)})
|
||||||
|
Loading…
Reference in New Issue
Block a user