mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-10 15:07:24 +00:00
avoid connection to self
This commit is contained in:
@@ -212,10 +212,11 @@ func (pexR *PEXReactor) ensurePeers() {
|
||||
|
||||
// if no addresses to dial, pick a random connected peer and ask for more peers
|
||||
if toDial.Size() == 0 {
|
||||
peers := pexR.sw.Peers().List()
|
||||
i := rand.Int() % len(peers)
|
||||
log.Debug("No addresses to dial. Sending pexRequest to random peer", "peer", peers[i])
|
||||
pexR.RequestPEX(peers[i])
|
||||
if peers := pexR.sw.Peers().List(); len(peers) > 0 {
|
||||
i := rand.Int() % len(peers)
|
||||
log.Debug("No addresses to dial. Sending pexRequest to random peer", "peer", peers[i])
|
||||
pexR.RequestPEX(peers[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -171,10 +171,16 @@ func (sw *Switch) AddPeerWithConnection(conn net.Conn, outbound bool) (*Peer, er
|
||||
conn.Close()
|
||||
return nil, err
|
||||
}
|
||||
// check version, chain id
|
||||
if err := sw.nodeInfo.CompatibleWith(peerNodeInfo); err != nil {
|
||||
conn.Close()
|
||||
return nil, err
|
||||
}
|
||||
// avoid self
|
||||
if peerNodeInfo.UUID == sw.nodeInfo.UUID {
|
||||
conn.Close()
|
||||
return nil, fmt.Errorf("Ignoring connection from self")
|
||||
}
|
||||
|
||||
// the peerNodeInfo is not verified,
|
||||
// so we overwrite the IP with that from the conn
|
||||
|
||||
@@ -9,6 +9,8 @@ import (
|
||||
"github.com/tendermint/tendermint/binary"
|
||||
. "github.com/tendermint/tendermint/common"
|
||||
"github.com/tendermint/tendermint/types"
|
||||
|
||||
"github.com/tendermint/tendermint/Godeps/_workspace/src/code.google.com/p/go-uuid/uuid"
|
||||
)
|
||||
|
||||
type PeerMessage struct {
|
||||
@@ -78,12 +80,14 @@ func makeSwitchPair(t testing.TB, initSwitch func(*Switch) *Switch) (*Switch, *S
|
||||
Moniker: "switch1",
|
||||
ChainID: "testing",
|
||||
Version: "123.123.123",
|
||||
UUID: uuid.New(),
|
||||
})
|
||||
s2 := initSwitch(NewSwitch())
|
||||
s2.SetNodeInfo(&types.NodeInfo{
|
||||
Moniker: "switch2",
|
||||
ChainID: "testing",
|
||||
Version: "123.123.123",
|
||||
UUID: uuid.New(),
|
||||
})
|
||||
|
||||
// Start switches
|
||||
|
||||
Reference in New Issue
Block a user