diff --git a/exchange/bitswap/bitswap.go b/exchange/bitswap/bitswap.go index ce5547d9e5a1a222baf7d51d87c56bd443755afe..2dc73ca8eeaa862f6e29c2cecd0b213453269f67 100644 --- a/exchange/bitswap/bitswap.go +++ b/exchange/bitswap/bitswap.go @@ -2,7 +2,6 @@ package bitswap import ( "errors" - "fmt" context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go" @@ -66,17 +65,13 @@ func (bs *bitswap) Block(parent context.Context, k u.Key) (*blocks.Block, error) // TODO add to wantlist promise := bs.notifications.Subscribe(ctx, k) - // const maxProviders = 20 - // using non-async version for now. - peersToQuery, err := bs.routing.FindProviders(ctx, k) - if err != nil { - return nil, fmt.Errorf("No providers found for %d (%v)", k, err) - } + const maxProviders = 20 + peersToQuery := bs.routing.FindProvidersAsync(ctx, k, maxProviders) go func() { message := bsmsg.New() message.AppendWanted(k) - for _, iiiii := range peersToQuery { + for iiiii := range peersToQuery { // u.DOut("bitswap got peersToQuery: %s\n", iiiii) go func(p *peer.Peer) { response, err := bs.sender.SendRequest(ctx, p, message) diff --git a/exchange/bitswap/network/interface.go b/exchange/bitswap/network/interface.go index f3efc8fe428fc0bfe6d2056f9a51dedbd1a5654c..15fa9c89e21d360afb41e20882ac340754e8d0d4 100644 --- a/exchange/bitswap/network/interface.go +++ b/exchange/bitswap/network/interface.go @@ -46,11 +46,7 @@ type NetMessageService interface { // TODO rename -> Router? type Routing interface { // FindProvidersAsync returns a channel of providers for the given key - // FindProvidersAsync(context.Context, u.Key, int) <-chan *peer.Peer - // ^--- removed this for now because has some bugs apparently. - - // FindProviders returns the providers for the given key - FindProviders(context.Context, u.Key) ([]*peer.Peer, error) + FindProvidersAsync(context.Context, u.Key, int) <-chan *peer.Peer // Provide provides the key to the network Provide(context.Context, u.Key) error