Skip to content

Commit

Permalink
Merge pull request #36 from libp2p/feat/better-conn-check
Browse files Browse the repository at this point in the history
use optimized 'HaveConnToPeer' checks
  • Loading branch information
Stebalien authored Sep 21, 2017
2 parents 1dfbb4e + 5be8da5 commit 0ee04d7
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions p2p/net/swarm/swarm.go
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ func (s *Swarm) SetStreamHandler(handler inet.StreamHandler) {
// NewStreamWithPeer creates a new stream on any available connection to p
func (s *Swarm) NewStreamWithPeer(ctx context.Context, p peer.ID) (*Stream, error) {
// if we have no connections, try connecting.
if len(s.ConnectionsToPeer(p)) == 0 {
if !s.HaveConnsToPeer(p) {
log.Debug("Swarm: NewStreamWithPeer no connections. Attempting to connect...")
if _, err := s.Dial(ctx, p); err != nil {
return nil, err
Expand All @@ -288,16 +288,11 @@ func (s *Swarm) NewStreamWithPeer(ctx context.Context, p peer.ID) (*Stream, erro

// ConnectionsToPeer returns all the live connections to p
func (s *Swarm) ConnectionsToPeer(p peer.ID) []*Conn {
return wrapConns(ps.ConnsWithGroup(p, s.swarm.Conns()))
return wrapConns(s.swarm.ConnsWithGroup(p))
}

func (s *Swarm) HaveConnsToPeer(p peer.ID) bool {
for _, c := range s.swarm.Conns() {
if c.InGroup(p) {
return true
}
}
return false
return len(s.swarm.ConnsWithGroup(p)) > 0
}

// Connections returns a slice of all connections.
Expand Down

0 comments on commit 0ee04d7

Please sign in to comment.