From 53c966b634eda93eacf0021c82ed7d03fc88581f Mon Sep 17 00:00:00 2001 From: jubb Date: Thu, 25 Mar 2021 13:25:07 +1100 Subject: [PATCH] fix: race in receive messages processing from restore --- .../session/libsession/messaging/jobs/MessageReceiveJob.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageReceiveJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageReceiveJob.kt index 9dac6de010..143394312f 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageReceiveJob.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageReceiveJob.kt @@ -18,6 +18,8 @@ class MessageReceiveJob(val data: ByteArray, val isBackgroundPoll: Boolean, val val TAG = MessageReceiveJob::class.simpleName val KEY: String = "MessageReceiveJob" + private val RECEIVE_LOCK = Object() + //keys used for database storage purpose private val KEY_DATA = "data" private val KEY_IS_BACKGROUND_POLL = "is_background_poll" @@ -34,7 +36,9 @@ class MessageReceiveJob(val data: ByteArray, val isBackgroundPoll: Boolean, val try { val isRetry: Boolean = failureCount != 0 val (message, proto) = MessageReceiver.parse(this.data, this.openGroupMessageServerID, isRetry) - MessageReceiver.handle(message, proto, this.openGroupID) + synchronized(RECEIVE_LOCK) { + MessageReceiver.handle(message, proto, this.openGroupID) + } this.handleSuccess() deferred.resolve(Unit) } catch (e: Exception) {