Commit a3deb311 authored by Janoš Guljaš's avatar Janoš Guljaš Committed by GitHub

fix(pushsync, retrieval): avoid deadlocks on context done (#2327)

parent 7ab51ef4
......@@ -381,7 +381,10 @@ func (ps *PushSync) pushToClosest(ctx context.Context, ch swarm.Chunk, retryAllo
ps.skipList.Add(peer, ch.Address(), skipPeerExpiration)
}
resultC <- &pushResult{err: err, attempted: attempted}
select {
case resultC <- &pushResult{err: err, attempted: attempted}:
case <-ctx.Done():
}
return
}
select {
......
......@@ -154,16 +154,22 @@ func (s *Service) RetrieveChunk(ctx context.Context, addr swarm.Address, origin
defer cancel()
chunk, peer, requested, err := s.retrieveChunk(ctx, addr, sp, origin)
resultC <- retrievalResult{
select {
case resultC <- retrievalResult{
chunk: chunk,
peer: peer,
err: err,
retrieved: requested,
}:
case <-ctx.Done():
}
}()
} else {
resultC <- retrievalResult{}
select {
case resultC <- retrievalResult{}:
case <-ctx.Done():
}
}
select {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment