diff --git a/chaincode/controller/bid/bid_controller.go b/chaincode/controller/bid/bid_controller.go index 91d183e42804af887b46fa35151a5c9384dcdf7a..c6a19ef80489404a2cd258b8adfda659e7eef201 100644 --- a/chaincode/controller/bid/bid_controller.go +++ b/chaincode/controller/bid/bid_controller.go @@ -57,6 +57,7 @@ var ( errChildrenMissmatch = errors.New("number of requested childs and proposed id count mismatch") errBidirectionalLink = errors.New("failed to bidirectonally link base asset on current transaction") errInvalidBidQuantity = errors.New("bid quantity is greater than the available quantity") + errInvalidBidder = errors.New("bidder has no registered bid") ) // constructor like function @@ -192,10 +193,10 @@ func (c BidDecisionController) bidResponse(stub shared.LedgerBuildrStubInterface return nil, nil, err } - var selectedBid Bid + var selectedBid *Bid = nil for i, bid := range auxArr { if bid.Bidder.Id == bidDecisionParams.Bidder { - selectedBid = bid + selectedBid = &bid if acceptBid { auxArr[i].Status = Accepted } else { @@ -205,10 +206,14 @@ func (c BidDecisionController) bidResponse(stub shared.LedgerBuildrStubInterface } } + if selectedBid == nil { + return nil, nil, errInvalidBidder + } + biddableAsset.Add("bids", auxArr) biddableAsset.MarkModification(stub) - return biddableAsset, &selectedBid, nil + return biddableAsset, selectedBid, nil } func (c BidDecisionController) RejectBid(stub shared.LedgerBuildrStubInterface, params shared.LedgerBuildrAsset) protos.Response {