From 7a354fe220a180a8511949d840acd507c0db7ac9 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Fri, 20 Aug 2021 10:01:25 +1000 Subject: [PATCH] potentially fix the closed group not receiving messages issue --- .../Sending & Receiving/Pollers/ClosedGroupPoller.swift | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift b/SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift index 6a4fb2c92..df74e3f08 100644 --- a/SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift +++ b/SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift @@ -40,8 +40,11 @@ public final class ClosedGroupPoller : NSObject { public func startPolling(for groupPublicKey: String) { guard !isPolling(for: groupPublicKey) else { return } - setUpPolling(for: groupPublicKey) + // Might be a race condition that the setUpPolling finishes too soon, + // and the timer is not created, if we mark the group as is polling + // after setUpPolling. So the poller may not work, thus misses messages. isPolling[groupPublicKey] = true + setUpPolling(for: groupPublicKey) } @objc public func stop() { @@ -51,8 +54,8 @@ public final class ClosedGroupPoller : NSObject { } public func stopPolling(for groupPublicKey: String) { - timers[groupPublicKey]?.invalidate() isPolling[groupPublicKey] = false + timers[groupPublicKey]?.invalidate() } // MARK: Private API