From f695508fdd1f49a6f6b7df548fec5a070b18ff2d Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Fri, 11 Sep 2015 02:17:21 +0200 Subject: [PATCH] Fixed race condition and missing returns. --- .../nutomic/ensichat/protocol/ChatService.scala | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala index 853315e..f4e9e14 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala @@ -188,24 +188,26 @@ class ChatService extends Service { getResources.getString(R.string.default_max_connections)).toInt if (connections().size == maxConnections) { Log.i(Tag, "Maximum number of connections reached") - false + return false } val info = msg.body.asInstanceOf[ConnectionInfo] val sender = crypto.calculateAddress(info.key) if (sender == Address.Broadcast || sender == Address.Null) { Log.i(Tag, "Ignoring ConnectionInfo message with invalid sender " + sender) - false + return false } if (crypto.havePublicKey(sender) && !crypto.verify(msg, crypto.getPublicKey(sender))) { Log.i(Tag, "Ignoring ConnectionInfo message with invalid signature") - false + return false } - if (!crypto.havePublicKey(sender)) { - crypto.addPublicKey(sender, info.key) - Log.i(Tag, "Added public key for new device " + sender.toString) + synchronized { + if (!crypto.havePublicKey(sender)) { + crypto.addPublicKey(sender, info.key) + Log.i(Tag, "Added public key for new device " + sender.toString) + } } Log.i(Tag, "Node " + sender + " connected")