Skip to content

Commit 0b1bd5f

Browse files
committed
coreapi pubsub: better ctx for connectToPubSubPeers
License: MIT Signed-off-by: Łukasz Magiera <[email protected]>
1 parent 690edaf commit 0b1bd5f

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

core/coreapi/pubsub.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
type PubSubAPI CoreAPI
2121

2222
type pubSubSubscription struct {
23+
cancel context.CancelFunc
2324
subscription *floodsub.Subscription
2425
}
2526

@@ -75,27 +76,29 @@ func (api *PubSubAPI) Subscribe(ctx context.Context, topic string, opts ...caopt
7576
return nil, err
7677
}
7778

79+
pubctx, cancel := context.WithCancel(api.node.Context())
80+
7881
if options.Discover {
7982
go func() {
80-
blk, err := api.core().Block().Put(ctx, strings.NewReader("floodsub:"+topic))
83+
blk, err := api.core().Block().Put(pubctx, strings.NewReader("floodsub:"+topic))
8184
if err != nil {
8285
log.Error("pubsub discovery: ", err)
8386
return
8487
}
8588

86-
connectToPubSubPeers(ctx, api.node, blk.Path().Cid())
89+
connectToPubSubPeers(pubctx, api.node, blk.Path().Cid())
8790
}()
8891
}
8992

90-
return &pubSubSubscription{sub}, nil
93+
return &pubSubSubscription{cancel, sub}, nil
9194
}
9295

9396
func connectToPubSubPeers(ctx context.Context, n *core.IpfsNode, cid cid.Cid) {
9497
ctx, cancel := context.WithCancel(ctx)
9598
defer cancel()
9699

97100
provs := n.Routing.FindProvidersAsync(ctx, cid, 10)
98-
wg := &sync.WaitGroup{}
101+
var wg sync.WaitGroup
99102
for p := range provs {
100103
wg.Add(1)
101104
go func(pi pstore.PeerInfo) {
@@ -127,6 +130,7 @@ func (api *PubSubAPI) checkNode() error {
127130
}
128131

129132
func (sub *pubSubSubscription) Close() error {
133+
sub.cancel()
130134
sub.subscription.Cancel()
131135
return nil
132136
}

0 commit comments

Comments
 (0)