mirror of
https://github.com/libp2p/go-libp2p-peerstore.git
synced 2025-02-06 06:20:06 +08:00
Only lock critical section
This commit is contained in:
parent
be8ee63ab9
commit
785b890ecb
@ -317,18 +317,17 @@ func (mgr *AddrSubManager) BroadcastAddr(p peer.ID, addr ma.Multiaddr) {
|
||||
// AddrStream creates a new subscription for a given peer ID, pre-populating the
|
||||
// channel with any addresses we might already have on file.
|
||||
func (mgr *AddrSubManager) AddrStream(ctx context.Context, p peer.ID, initial []ma.Multiaddr) <-chan ma.Multiaddr {
|
||||
mgr.mu.Lock()
|
||||
defer mgr.mu.Unlock()
|
||||
|
||||
sub := &addrSub{pubch: make(chan ma.Multiaddr), ctx: ctx}
|
||||
|
||||
out := make(chan ma.Multiaddr)
|
||||
|
||||
mgr.mu.Lock()
|
||||
if _, ok := mgr.subs[p]; ok {
|
||||
mgr.subs[p] = append(mgr.subs[p], sub)
|
||||
} else {
|
||||
mgr.subs[p] = []*addrSub{sub}
|
||||
}
|
||||
mgr.mu.Unlock()
|
||||
|
||||
sort.Sort(addr.AddrList(initial))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user