Skip to content

Commit 0adaad7

Browse files
authored
Merge pull request ipfs#173 from libp2p/fix/172
don't treat a canceled context as a successful query
2 parents 86e37ca + 993399a commit 0adaad7

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

routing.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,6 @@ func (dht *IpfsDHT) GetValue(ctx context.Context, key string, opts ...ropts.Opti
120120
}
121121
eip.Done()
122122
}()
123-
ctx, cancel := context.WithTimeout(ctx, time.Minute)
124-
defer cancel()
125123

126124
var cfg ropts.Options
127125
if err := cfg.Apply(opts...); err != nil {
@@ -280,15 +278,18 @@ func (dht *IpfsDHT) GetValues(ctx context.Context, key string, nvals int) (_ []R
280278
return res, nil
281279
})
282280

283-
// run it!
284-
_, err = query.Run(ctx, rtp)
285-
if len(vals) == 0 {
286-
if err != nil {
287-
return nil, err
288-
}
289-
}
281+
reqCtx, cancel := context.WithTimeout(ctx, time.Minute)
282+
defer cancel()
283+
_, err = query.Run(reqCtx, rtp)
290284

291-
return vals, nil
285+
// We do have some values but we either ran out of peers to query or
286+
// searched for a whole minute.
287+
//
288+
// We'll just call this a success.
289+
if len(vals) > 0 && (err == routing.ErrNotFound || reqCtx.Err() == context.DeadlineExceeded) {
290+
err = nil
291+
}
292+
return vals, err
292293
}
293294

294295
// Provider abstraction for indirect stores.

0 commit comments

Comments
 (0)