diff --git a/core/disputes.go b/core/disputes.go index ce4af2ea8e..64a385b579 100644 --- a/core/disputes.go +++ b/core/disputes.go @@ -172,6 +172,10 @@ func (n *OpenBazaarNode) verifyEscrowFundsAreDisputeable(contract *pb.RicardianC log.Errorf("Failed NewHashFromStr(%s): %s", r.Txid, err.Error()) return false } + if hash == nil { + log.Errorf("Nil NewHashFromStr(%s)", r.Txid) + return false + } actualConfirmations, _, err := wal.GetConfirmations(*hash) if err != nil { log.Errorf("Failed GetConfirmations(%s): %s", hash.String(), err.Error()) diff --git a/net/service/handlers.go b/net/service/handlers.go index 31bca6438a..34a4348770 100644 --- a/net/service/handlers.go +++ b/net/service/handlers.go @@ -1309,11 +1309,13 @@ func (service *OpenBazaarService) handleDisputeOpen(p peer.ID, pmes *pb.Message, log.Errorf("failed calc orderID") } - err = service.node.Datastore.Messages().Put( - fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_OPEN)), - orderID, pb.Message_DISPUTE_OPEN, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) - if err != nil { - log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_OPEN), err) + if orderID != "" { + err = service.node.Datastore.Messages().Put( + fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_OPEN)), + orderID, pb.Message_DISPUTE_OPEN, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) + if err != nil { + log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_OPEN), err) + } } // Verify signature @@ -1346,11 +1348,13 @@ func (service *OpenBazaarService) handleDisputeUpdate(p peer.ID, pmes *pb.Messag } orderID := update.OrderId - err = service.node.Datastore.Messages().Put( - fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_UPDATE)), - orderID, pb.Message_DISPUTE_UPDATE, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) - if err != nil { - log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_UPDATE), err) + if orderID != "" { + err = service.node.Datastore.Messages().Put( + fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_UPDATE)), + orderID, pb.Message_DISPUTE_UPDATE, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) + if err != nil { + log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_UPDATE), err) + } } dispute, err := service.node.Datastore.Cases().GetByCaseID(update.OrderId) @@ -1448,11 +1452,13 @@ func (service *OpenBazaarService) handleDisputeClose(p peer.ID, pmes *pb.Message } orderID := rc.DisputeResolution.OrderId - err = service.node.Datastore.Messages().Put( - fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_CLOSE)), - orderID, pb.Message_DISPUTE_CLOSE, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) - if err != nil { - log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_CLOSE), err) + if orderID != "" { + err = service.node.Datastore.Messages().Put( + fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_CLOSE)), + orderID, pb.Message_DISPUTE_CLOSE, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) + if err != nil { + log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_CLOSE), err) + } } // Load the order diff --git a/qa/testdata/eth_listing.json b/qa/testdata/eth_listing.json index acc032fdac..c731ae2dca 100644 --- a/qa/testdata/eth_listing.json +++ b/qa/testdata/eth_listing.json @@ -18,7 +18,7 @@ "name": "A", "currencyType": "A" }, - "bigPrice": "120000000000000", + "bigPrice": "4500000000000000", "tags": [ "tshirts", "clothing", diff --git a/repo/db/sales.go b/repo/db/sales.go index 04633df54d..3ae28c8fa0 100644 --- a/repo/db/sales.go +++ b/repo/db/sales.go @@ -5,8 +5,8 @@ import ( "encoding/json" "errors" "fmt" - "strings" "math/big" + "strings" "sync" "time" diff --git a/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go b/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go index 5b9691943d..fe506fd529 100644 --- a/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go +++ b/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go @@ -1074,10 +1074,12 @@ func (wallet *EthereumWallet) CreateMultisigSignature(ins []wi.TransactionInput, mbvAddresses := make([]string, 3) for i, out := range outs { - if out.Address.String() == rScript.Moderator.Hex() { + if out.Value.Cmp(new(big.Int)) > 0 { indx = append(indx, i) + } + if out.Address.String() == rScript.Moderator.Hex() { mbvAddresses[0] = out.Address.String() - } else if out.Address.String() == rScript.Buyer.Hex() { + } else if out.Address.String() == rScript.Buyer.Hex() && (out.Value.Cmp(new(big.Int)) > 0) { mbvAddresses[1] = out.Address.String() } else { mbvAddresses[2] = out.Address.String() @@ -1228,6 +1230,9 @@ func (wallet *EthereumWallet) Multisign(ins []wi.TransactionInput, outs []wi.Tra mbvAddresses := make([]string, 3) for i, out := range outs { + if out.Value.Cmp(new(big.Int)) > 0 { + indx = append(indx, i) + } if out.Address.String() == rScript.Moderator.Hex() { indx = append(indx, i) mbvAddresses[0] = out.Address.String() @@ -1435,6 +1440,10 @@ func (wallet *EthereumWallet) GetConfirmations(txid chainhash.Hash) (confirms, a return 0, 0, errors.New("invalid txn hash") } + if s["message"] != nil { + return 0, 0, nil + } + result := s["result"].(map[string]interface{}) d, _ := strconv.ParseInt(result["blockNumber"].(string), 0, 64) diff --git a/vendor/github.com/OpenBazaar/multiwallet/client/blockbook/client.go b/vendor/github.com/OpenBazaar/multiwallet/client/blockbook/client.go index 151d649145..46a15a0e1d 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/client/blockbook/client.go +++ b/vendor/github.com/OpenBazaar/multiwallet/client/blockbook/client.go @@ -15,7 +15,6 @@ import ( "sync" "time" - "github.com/cenkalti/backoff" gosocketio "github.com/OpenBazaar/golang-socketio" "github.com/OpenBazaar/golang-socketio/protocol" clientErr "github.com/OpenBazaar/multiwallet/client/errors" @@ -24,6 +23,7 @@ import ( "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcutil" + "github.com/cenkalti/backoff" "github.com/cpacia/bchutil" "github.com/op/go-logging" "golang.org/x/net/proxy" @@ -605,7 +605,7 @@ func (i *BlockBookClient) setupListeners() error { } return nil }, b) - if err != nil{ + if err != nil { Log.Fatalf("error after retrying: %v", err) } }