aboutsummaryrefslogtreecommitdiffstats
path: root/src/state/host.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/host.rs')
-rw-r--r--src/state/host.rs7
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);