diff options
Diffstat (limited to 'Firestore/Source/Remote/FSTStream.mm')
-rw-r--r-- | Firestore/Source/Remote/FSTStream.mm | 9 |
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]; |