From 1558d8c6c53116848bc736d0885f88ed34503ba3 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 14 Apr 2017 13:38:04 -0400 Subject: [PATCH] Avoid lost messages by acknowledges message receipt after the message is processed. // FREEBIE --- Signal/src/Jobs/MessageFetcherJob.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Signal/src/Jobs/MessageFetcherJob.swift b/Signal/src/Jobs/MessageFetcherJob.swift index 66d97ab50..2a63dfcaf 100644 --- a/Signal/src/Jobs/MessageFetcherJob.swift +++ b/Signal/src/Jobs/MessageFetcherJob.swift @@ -39,9 +39,10 @@ class MessageFetcherJob: NSObject { let runPromise = self.fetchUndeliveredMessages().then { (envelopes: [OWSSignalServiceProtosEnvelope], more: Bool) -> Void in for envelope in envelopes { Logger.info("\(self.TAG) received envelope.") - self.messagesManager.handleReceivedEnvelope(envelope) - - self.acknowledgeDelivery(envelope: envelope) + self.messagesManager.handleReceivedEnvelope(envelope, completion: { + // Don't acknowledge delivery until the envelope has been processed. + self.acknowledgeDelivery(envelope: envelope) + }) } if more { Logger.info("\(self.TAG) more messages, so recursing.")