From ac025e738d2816f9f98e0bab8d55732b5a37f2bc Mon Sep 17 00:00:00 2001 From: msutton Date: Wed, 25 May 2022 02:48:43 +0300 Subject: [PATCH] Wrap the entire wallet send operation with a lock --- cmd/kaspawallet/daemon/server/broadcast.go | 5 +++-- cmd/kaspawallet/daemon/server/send.go | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cmd/kaspawallet/daemon/server/broadcast.go b/cmd/kaspawallet/daemon/server/broadcast.go index 13b674d87..2b93a6d7f 100644 --- a/cmd/kaspawallet/daemon/server/broadcast.go +++ b/cmd/kaspawallet/daemon/server/broadcast.go @@ -13,6 +13,9 @@ import ( ) func (s *server) Broadcast(_ context.Context, request *pb.BroadcastRequest) (*pb.BroadcastResponse, error) { + s.lock.Lock() + defer s.lock.Unlock() + txIDs, err := s.broadcast(request.Transactions, request.IsDomain) if err != nil { return nil, err @@ -22,8 +25,6 @@ func (s *server) Broadcast(_ context.Context, request *pb.BroadcastRequest) (*pb } func (s *server) broadcast(transactions [][]byte, isDomain bool) ([]string, error) { - s.lock.Lock() - defer s.lock.Unlock() txIDs := make([]string, len(transactions)) var tx *externalapi.DomainTransaction diff --git a/cmd/kaspawallet/daemon/server/send.go b/cmd/kaspawallet/daemon/server/send.go index accc35bd0..5260714de 100644 --- a/cmd/kaspawallet/daemon/server/send.go +++ b/cmd/kaspawallet/daemon/server/send.go @@ -7,10 +7,14 @@ import ( ) func (s *server) Send(_ context.Context, request *pb.SendRequest) (*pb.SendResponse, error) { + s.lock.Lock() + defer s.lock.Unlock() + unsignedTransactions, err := s.createUnsignedTransactions(request.ToAddress, request.Amount, request.From) if err != nil { return nil, err } + signedTransactions, err := s.signTransactions(unsignedTransactions, request.Password) if err != nil { return nil, err