diff --git a/app/process-connection/process-connection.go b/app/process-connection/process-connection.go index 71356b026ff139eaea19f3c591d0314e5fa6ea38..c7e897efe50452d0d5ad2832eac3eef0e441c56e 100644 --- a/app/process-connection/process-connection.go +++ b/app/process-connection/process-connection.go @@ -86,10 +86,11 @@ func processTransaction(serverListener net.Listener, serverConfig Config, object database = ObjectStorageAPI.AddTransactionToBlobStorage(trans, database, objectStorage) go Sender.SendTransactionToAllNeighbours(serverConfig, trans) } + if !amIRoot && limit == 1 { // for end nodes + break + } } - fmt.Println("***********************************") - fmt.Println("All transactions have been received") - fmt.Println("***********************************") + utilities.PrintTransactionDoneMessage() } func processRate(conn net.Conn, serverListener net.Listener, serverConfig Config, objectStorage Blob, mess Message, amIRoot bool) { trans := utilities.TranslateMessageToTransaction(mess) @@ -228,8 +229,8 @@ func processVoteRequest(conn net.Conn, serverListener net.Listener, serverConfig } func ProcessClient(conn net.Conn, server net.Listener, objectStorage Blob, serverConfig Config, amIRoot bool, mutex *sync.Mutex) { - mutex.Lock() - defer mutex.Unlock() + // mutex.Lock() + // defer mutex.Unlock() utilities.PrintConnection(conn, 0) var mess Message @@ -243,6 +244,12 @@ func ProcessClient(conn net.Conn, server net.Listener, objectStorage Blob, serve fmt.Println("The message is ", mess) if mess.MessageType == "transaction" { fmt.Println("Received a transaction.. processing") + trans := utilities.TranslateMessageToTransaction(mess) + isTransactionInDatabase := ObjectStorageAPI.IsTransactionInDatabase(objectStorage, trans) + if isTransactionInDatabase { + conn.Close() + return // transaction already in database + } processTransaction(server, serverConfig, objectStorage, mess, amIRoot) } else if mess.MessageType == "rate" { fmt.Println("Received a rate")