aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Remote/FSTStream.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/Source/Remote/FSTStream.mm')
-rw-r--r--Firestore/Source/Remote/FSTStream.mm9
1 files changed, 8 insertions, 1 deletions
diff --git a/Firestore/Source/Remote/FSTStream.mm b/Firestore/Source/Remote/FSTStream.mm
index a5c36c8..f65230b 100644
--- a/Firestore/Source/Remote/FSTStream.mm
+++ b/Firestore/Source/Remote/FSTStream.mm
@@ -326,7 +326,8 @@ static const NSTimeInterval kIdleTimeout = 60.0;
/** Resumes stream start after backing off. */
- (void)resumeStartFromBackoffWithDelegate:(id)delegate {
if (self.state == FSTStreamStateStopped) {
- // Streams can be stopped while waiting for backoff to complete.
+ // We should have canceled the backoff timer when the stream was closed, but just in case we
+ // make this a no-op.
return;
}
@@ -367,8 +368,14 @@ static const NSTimeInterval kIdleTimeout = 60.0;
@"Can't provide an error when not in an error state.");
[self.workerDispatchQueue verifyIsCurrentQueue];
+
+ // The stream will be closed so we don't need our idle close timer anymore.
[self cancelIdleCheck];
+ // Ensure we don't leave a pending backoff operation queued (in case close()
+ // was called while we were waiting to reconnect).
+ [self.backoff cancel];
+
if (finalState != FSTStreamStateError) {
// If this is an intentional close ensure we don't delay our next connection attempt.
[self.backoff reset];