From 039a00003ee34f4a521c8f517b43a054feb8ffee Mon Sep 17 00:00:00 2001
From: Xavier Perret <xa.perret@outlook.com>
Date: Sun, 30 Oct 2022 17:50:37 +0100
Subject: [PATCH] corrections

---
 app/process-connection/process-connection.go | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/app/process-connection/process-connection.go b/app/process-connection/process-connection.go
index 71356b0..c7e897e 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")
-- 
GitLab