Unverified Commit 33c82070 authored by Whyrusleeping's avatar Whyrusleeping Committed by GitHub

Merge pull request #4407 from ipfs/fix/4394

fix deadlock in bitswap sessions
parents 586dd656 a94755db
......@@ -120,9 +120,13 @@ type interestReq struct {
// still be in the interest cache.
func (s *Session) isLiveWant(c *cid.Cid) bool {
resp := make(chan bool, 1)
s.interestReqs <- interestReq{
select {
case s.interestReqs <- interestReq{
c: c,
resp: resp,
}:
case <-s.ctx.Done():
return false
}
select {
......@@ -278,13 +282,17 @@ func (s *Session) cancel(keys []*cid.Cid) {
}
func (s *Session) cancelWants(keys []*cid.Cid) {
s.cancelKeys <- keys
select {
case s.cancelKeys <- keys:
case <-s.ctx.Done():
}
}
func (s *Session) fetch(ctx context.Context, keys []*cid.Cid) {
select {
case s.newReqs <- keys:
case <-ctx.Done():
case <-s.ctx.Done():
}
}
......
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