diff options
Diffstat (limited to 'src/state/host.rs')
| -rw-r--r-- | src/state/host.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/state/host.rs b/src/state/host.rs index 3210ee2..38be831 100644 --- a/src/state/host.rs +++ b/src/state/host.rs @@ -24,9 +24,10 @@ impl AppState { /// document. (Lock order doc -> peer, as in sync generation.) fn swap_document(&self, replica: &mut Replica, epoch: Epoch, doc: Document) -> Document { let old = std::mem::replace(&mut replica.doc, doc); - // The old document's signatures are of its changes; this node's replayed into - // the new one, signed at once. - replica.signatures = Default::default(); + // The old document's signatures, of the changes the new one holds too (it may + // be the old one without some, or another of its epoch); this node's replayed + // into it, signed at once. + replica.signatures = replica.signatures.kept_for(&replica.doc); if let Some(key) = &self.node_key { let replica = &mut *replica; replica.signatures.sign_own_latest(&replica.doc, key); |
