aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source
diff options
context:
space:
mode:
authorGravatar Sebastian Schmidt <mrschmidt@google.com>2018-06-20 12:11:24 -0700
committerGravatar GitHub <noreply@github.com>2018-06-20 12:11:24 -0700
commitc5187df52e192845468887590529c354708bdf0f (patch)
treeeb0eb698a9749743c1591f2a573e3a918e9909cd /Firestore/Source
parenta4b7a244e7bc2778e7178f7855d58bb93f0deaf8 (diff)
Removing the target state on stream error (#1420)
Diffstat (limited to 'Firestore/Source')
-rw-r--r--Firestore/Source/Remote/FSTRemoteEvent.h3
-rw-r--r--Firestore/Source/Remote/FSTRemoteStore.mm4
2 files changed, 6 insertions, 1 deletions
diff --git a/Firestore/Source/Remote/FSTRemoteEvent.h b/Firestore/Source/Remote/FSTRemoteEvent.h
index 9ea0f9c..02a5289 100644
--- a/Firestore/Source/Remote/FSTRemoteEvent.h
+++ b/Firestore/Source/Remote/FSTRemoteEvent.h
@@ -176,6 +176,9 @@ initWithSnapshotVersion:(firebase::firestore::model::SnapshotVersion)snapshotVer
/** Processes and adds the WatchTargetChange to the current set of changes. */
- (void)handleTargetChange:(FSTWatchTargetChange *)targetChange;
+/** Removes the in-memory state for the provided target. */
+- (void)removeTarget:(FSTTargetID)targetID;
+
/**
* Handles existence filters and synthesizes deletes for filter mismatches. Targets that are
* invalidated by filter mismatches are added to `targetMismatches`.
diff --git a/Firestore/Source/Remote/FSTRemoteStore.mm b/Firestore/Source/Remote/FSTRemoteStore.mm
index 54d00c4..4309c74 100644
--- a/Firestore/Source/Remote/FSTRemoteStore.mm
+++ b/Firestore/Source/Remote/FSTRemoteStore.mm
@@ -405,8 +405,10 @@ static const int kMaxPendingWrites = 10;
// Ignore targets that have been removed already.
for (FSTBoxedTargetID *targetID in change.targetIDs) {
if (self.listenTargets[targetID]) {
+ int unboxedTargetId = targetID.intValue;
[self.listenTargets removeObjectForKey:targetID];
- [self.syncEngine rejectListenWithTargetID:[targetID intValue] error:change.cause];
+ [self.watchChangeAggregator removeTarget:unboxedTargetId];
+ [self.syncEngine rejectListenWithTargetID:unboxedTargetId error:change.cause];
}
}
}