diff --git a/routing/dht/providers.go b/routing/dht/providers.go index 7f70056d3..0deea6324 100644 --- a/routing/dht/providers.go +++ b/routing/dht/providers.go @@ -107,10 +107,15 @@ func (pm *ProviderManager) GetProviders(ctx context.Context, k u.Key) []peer.Pee resp: make(chan []peer.Peer, 1), // buffered to prevent sender from blocking } select { - case pm.getprovs <- gp: - return <-gp.resp case <-ctx.Done(): return nil + case pm.getprovs <- gp: + } + select { + case <-ctx.Done(): + return nil + case peers := <-gp.resp: + return peers } }