mirror of
https://github.com/logos-messaging/go-libp2p-pubsub.git
synced 2026-01-07 15:23:08 +00:00
don't spawn a goroutine for scheduling connections
This commit is contained in:
parent
efb09f2984
commit
5b0ec14ea7
21
gossipsub.go
21
gossipsub.go
@ -47,6 +47,9 @@ var (
|
|||||||
// number of active connection attempts for peers obtained through px
|
// number of active connection attempts for peers obtained through px
|
||||||
GossipSubConnectors = 16
|
GossipSubConnectors = 16
|
||||||
|
|
||||||
|
// maximum number of pending connections for peers attempted through px
|
||||||
|
GossipSubMaxPendingConnections = 1024
|
||||||
|
|
||||||
// timeout for connection attempts
|
// timeout for connection attempts
|
||||||
GossipSubConnectionTimeout = 30 * time.Second
|
GossipSubConnectionTimeout = 30 * time.Second
|
||||||
)
|
)
|
||||||
@ -61,7 +64,7 @@ func NewGossipSub(ctx context.Context, h host.Host, opts ...Option) (*PubSub, er
|
|||||||
gossip: make(map[peer.ID][]*pb.ControlIHave),
|
gossip: make(map[peer.ID][]*pb.ControlIHave),
|
||||||
control: make(map[peer.ID]*pb.ControlMessage),
|
control: make(map[peer.ID]*pb.ControlMessage),
|
||||||
backoff: make(map[string]map[peer.ID]time.Time),
|
backoff: make(map[string]map[peer.ID]time.Time),
|
||||||
connect: make(chan connectInfo, GossipSubConnectors),
|
connect: make(chan connectInfo, GossipSubMaxPendingConnections),
|
||||||
mcache: NewMessageCache(GossipSubHistoryGossip, GossipSubHistoryLength),
|
mcache: NewMessageCache(GossipSubHistoryGossip, GossipSubHistoryLength),
|
||||||
}
|
}
|
||||||
return NewPubSub(ctx, h, rt, opts...)
|
return NewPubSub(ctx, h, rt, opts...)
|
||||||
@ -325,16 +328,14 @@ func (gs *GossipSubRouter) pxConnect(peers []*pb.PeerInfo) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// initiate connections, without blocking the event loop
|
for _, ci := range toconnect {
|
||||||
go func() {
|
select {
|
||||||
for _, ci := range toconnect {
|
case gs.connect <- ci:
|
||||||
select {
|
default:
|
||||||
case gs.connect <- ci:
|
log.Debugf("ignoring peer connection attempt; too many pending connections")
|
||||||
case <-gs.p.ctx.Done():
|
break
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}()
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gs *GossipSubRouter) connector() {
|
func (gs *GossipSubRouter) connector() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user