From a6d74bfcb8a959b60e2e92c6772cd3d9b69c136f Mon Sep 17 00:00:00 2001 From: stammw Date: Tue, 22 Jan 2019 13:44:09 +0100 Subject: [PATCH] QPACK: do not panic on tracking an already tracked stream bloc --- quinn-h3/src/qpack/table/dynamic.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/quinn-h3/src/qpack/table/dynamic.rs b/quinn-h3/src/qpack/table/dynamic.rs index 5880d782d..a96f27a07 100644 --- a/quinn-h3/src/qpack/table/dynamic.rs +++ b/quinn-h3/src/qpack/table/dynamic.rs @@ -488,12 +488,18 @@ impl DynamicTable { self.track_blocs = Some(HashMap::new()); } + if self.track_blocs.as_ref().unwrap().contains_key(&stream_id) { + self.untrack_bloc(stream_id).ok(); + } + match self.track_blocs.as_mut().unwrap().entry(stream_id) { - Entry::Occupied(e) => { - unimplemented!(); + Entry::Occupied(mut e) => { + e.insert(refs); } - Entry::Vacant(e) => e.insert(refs), - }; + Entry::Vacant(e) => { + e.insert(refs); + } + } } fn track_cancel(&mut self, refs: T) -> Result<(), Error>