From a58c83d9999d525a39fa7ce87af43c78cbf53ec7 Mon Sep 17 00:00:00 2001 From: Rob Walker Date: Wed, 18 Jul 2018 18:28:24 -0700 Subject: [PATCH] prevent infinite loop on window wraparound --- src/streamer.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/streamer.rs b/src/streamer.rs index b81906bedd..d5312a6585 100644 --- a/src/streamer.rs +++ b/src/streamer.rs @@ -395,21 +395,19 @@ fn process_blob( } // push all contiguous blobs into consumed queue, increment consumed - loop { + while *consumed < received { let k = (*consumed % WINDOW_SIZE) as usize; trace!("k: {} consumed: {}", k, *consumed); if window[k].data.is_none() { break; } + if let Some(blob) = &window[w].data { assert!(blob.read().unwrap().meta.size < BLOB_SIZE); } consume_queue.push_back(window[k].data.clone().expect("clone in fn recv_window")); *consumed += 1; - if *consumed % WINDOW_SIZE == 0 { - eprintln!("window wrapped, consumed {}", *consumed); - } } }