diff --git a/cli/client.go b/cli/client.go index c692fbe4b..1b1459707 100644 --- a/cli/client.go +++ b/cli/client.go @@ -461,6 +461,9 @@ var clientRetrieveCmd = &cli.Command{ return err } } + if offer.Err != "" { + return fmt.Errorf("The received offer errored: %s", offer.Err) + } ref := &lapi.FileRef{ Path: cctx.Args().Get(1), diff --git a/node/impl/client/client.go b/node/impl/client/client.go index c2073872f..23994fbe5 100644 --- a/node/impl/client/client.go +++ b/node/impl/client/client.go @@ -224,6 +224,15 @@ func (a *API) makeRetrievalQuery(ctx context.Context, rp retrievalmarket.Retriev if err != nil { return api.QueryOffer{Err: err.Error(), Miner: rp.Address, MinerPeerID: rp.ID} } + var errStr string + switch queryResponse.Status { + case retrievalmarket.QueryResponseAvailable: + errStr = "" + case retrievalmarket.QueryResponseUnavailable: + errStr = "retrieval query offer was unavailable" + case retrievalmarket.QueryResponseError: + errStr = "retrieval query offer errored" + } return api.QueryOffer{ Root: payload, @@ -233,6 +242,7 @@ func (a *API) makeRetrievalQuery(ctx context.Context, rp retrievalmarket.Retriev PaymentIntervalIncrease: queryResponse.MaxPaymentIntervalIncrease, Miner: queryResponse.PaymentAddress, // TODO: check MinerPeerID: rp.ID, + Err: errStr, } }