only allow one connection per ip

This commit is contained in:
Ethan Buchman 2015-04-25 18:01:02 -07:00 committed by Jae Kwon
parent b92c0401e6
commit 4f94e0f200
3 changed files with 7 additions and 7 deletions

View File

@ -68,7 +68,7 @@ func newPeer(conn net.Conn, peerNodeInfo *types.NodeInfo, outbound bool, reactor
mconn: mconn, mconn: mconn,
running: 0, running: 0,
NodeInfo: peerNodeInfo, NodeInfo: peerNodeInfo,
Key: mconn.RemoteAddress.String(), Key: mconn.RemoteAddress.IP.String(),
Data: NewCMap(), Data: NewCMap(),
} }
return p return p

View File

@ -170,9 +170,9 @@ func (pexR *PEXReactor) ensurePeers() {
if try == nil { if try == nil {
break break
} }
alreadySelected := toDial.Has(try.String()) alreadySelected := toDial.Has(try.IP.String())
alreadyDialing := pexR.sw.IsDialing(try) alreadyDialing := pexR.sw.IsDialing(try)
alreadyConnected := pexR.sw.Peers().Has(try.String()) alreadyConnected := pexR.sw.Peers().Has(try.IP.String())
if alreadySelected || alreadyDialing || alreadyConnected { if alreadySelected || alreadyDialing || alreadyConnected {
/* /*
log.Debug("Cannot dial address", "addr", try, log.Debug("Cannot dial address", "addr", try,
@ -190,7 +190,7 @@ func (pexR *PEXReactor) ensurePeers() {
if picked == nil { if picked == nil {
continue continue
} }
toDial.Set(picked.String(), picked) toDial.Set(picked.IP.String(), picked)
} }
// Dial picked addresses // Dial picked addresses

View File

@ -188,9 +188,9 @@ func (sw *Switch) startInitPeer(peer *Peer) {
func (sw *Switch) DialPeerWithAddress(addr *NetAddress) (*Peer, error) { func (sw *Switch) DialPeerWithAddress(addr *NetAddress) (*Peer, error) {
log.Debug("Dialing address", "address", addr) log.Debug("Dialing address", "address", addr)
sw.dialing.Set(addr.String(), addr) sw.dialing.Set(addr.IP.String(), addr)
conn, err := addr.DialTimeout(peerDialTimeoutSeconds * time.Second) conn, err := addr.DialTimeout(peerDialTimeoutSeconds * time.Second)
sw.dialing.Delete(addr.String()) sw.dialing.Delete(addr.IP.String())
if err != nil { if err != nil {
log.Debug("Failed dialing address", "address", addr, "error", err) log.Debug("Failed dialing address", "address", addr, "error", err)
return nil, err return nil, err
@ -205,7 +205,7 @@ func (sw *Switch) DialPeerWithAddress(addr *NetAddress) (*Peer, error) {
} }
func (sw *Switch) IsDialing(addr *NetAddress) bool { func (sw *Switch) IsDialing(addr *NetAddress) bool {
return sw.dialing.Has(addr.String()) return sw.dialing.Has(addr.IP.String())
} }
// Broadcast runs a go routine for each attempted send, which will block // Broadcast runs a go routine for each attempted send, which will block