From: Ian Jackson Date: Wed, 31 Mar 2021 18:14:13 +0000 (+0100) Subject: cmd updates: Restart updates when insert follows delete X-Git-Tag: otter-0.5.0~347 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=42dcf50d49dd01e29a1ff2cd07e598023b1f6359;p=otter.git cmd updates: Restart updates when insert follows delete Signed-off-by: Ian Jackson --- diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index b7dfdd67..1556e5e0 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -924,6 +924,7 @@ fn execute_for_game<'cs, 'igr, 'ig: 'igr>( #[derive(Debug,Default)] struct UpdateHandlerBulk { pieces: HashMap>, + have_deleted: bool, logs: bool, raw: Vec, } @@ -952,6 +953,15 @@ impl UpdateHandler { match self { Bulk(bulk) => { for (upiece, uuop) in updates.pcs { + match uuop { + Insert(()) if bulk.have_deleted => { + UpdateHandler::Bulk(mem::take(bulk)).complete(g, who)?; + }, + Delete() => { + bulk.have_deleted = true; + }, + _ => { }, + } use PieceUpdateOp::*; let oe = bulk.pieces.get(&upiece); let ne = match (oe, uuop) {