Skip to content

Commit ae267ce

Browse files
committed
Break fors correctly
1 parent 6a35764 commit ae267ce

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

composable/sequential.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,17 @@ func (r *Sequential) FindProvidersAsync(ctx context.Context, cid cid.Cid, count
5050
g.Add(1)
5151
go func() {
5252
defer g.Done()
53+
forr:
5354
for {
5455
select {
5556
case <-ctx.Done():
5657
return
5758
case v, ok := <-rch:
5859
if !ok {
59-
break
60+
break forr
6061
}
6162
if sentCount >= count {
62-
break
63+
break forr
6364
}
6465

6566
chanOut <- v
@@ -167,22 +168,25 @@ func (r *Sequential) SearchValue(ctx context.Context, key string, opts ...routin
167168

168169
go func() {
169170
for i := 0; i < len(chans); i++ {
170-
defer cancels[i]()
171171
if chans[i] == nil {
172+
cancels[i]()
172173
continue
173174
}
174175

176+
forr:
175177
for {
176178
select {
177179
case <-ctx.Done():
178180
return
179181
case v, ok := <-chans[i]:
180182
if !ok {
181-
break
183+
break forr
182184
}
183185
chanOut <- v
184186
}
185187
}
188+
189+
cancels[i]()
186190
}
187191
}()
188192

0 commit comments

Comments
 (0)