mirror of
https://github.com/libp2p/go-libp2p-peerstore.git
synced 2025-03-27 13:30:11 +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
|
// AddrStream creates a new subscription for a given peer ID, pre-populating the
|
||||||
// channel with any addresses we might already have on file.
|
// 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 {
|
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}
|
sub := &addrSub{pubch: make(chan ma.Multiaddr), ctx: ctx}
|
||||||
|
|
||||||
out := make(chan ma.Multiaddr)
|
out := make(chan ma.Multiaddr)
|
||||||
|
|
||||||
|
mgr.mu.Lock()
|
||||||
if _, ok := mgr.subs[p]; ok {
|
if _, ok := mgr.subs[p]; ok {
|
||||||
mgr.subs[p] = append(mgr.subs[p], sub)
|
mgr.subs[p] = append(mgr.subs[p], sub)
|
||||||
} else {
|
} else {
|
||||||
mgr.subs[p] = []*addrSub{sub}
|
mgr.subs[p] = []*addrSub{sub}
|
||||||
}
|
}
|
||||||
|
mgr.mu.Unlock()
|
||||||
|
|
||||||
sort.Sort(addr.AddrList(initial))
|
sort.Sort(addr.AddrList(initial))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user