fix(client): insure cancelled context avoids lock
This commit is contained in:
parent
10c1399474
commit
1cd49cec39
@ -508,10 +508,12 @@ func (a *API) clientRetrieve(ctx context.Context, order api.RetrievalOrder, ref
|
|||||||
|
|
||||||
var dealID retrievalmarket.DealID
|
var dealID retrievalmarket.DealID
|
||||||
subscribeEvents := make(chan retrievalSubscribeEvent, 1)
|
subscribeEvents := make(chan retrievalSubscribeEvent, 1)
|
||||||
|
subscribeCtx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
unsubscribe := a.Retrieval.SubscribeToEvents(func(event rm.ClientEvent, state rm.ClientDealState) {
|
unsubscribe := a.Retrieval.SubscribeToEvents(func(event rm.ClientEvent, state rm.ClientDealState) {
|
||||||
if state.PayloadCID.Equals(order.Root) && state.ID == dealID {
|
if state.PayloadCID.Equals(order.Root) && state.ID == dealID {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-subscribeCtx.Done():
|
||||||
case subscribeEvents <- retrievalSubscribeEvent{event, state}:
|
case subscribeEvents <- retrievalSubscribeEvent{event, state}:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user