prevent infinite loop on window wraparound

This commit is contained in:
Rob Walker 2018-07-18 18:28:24 -07:00
parent 6656ec816c
commit a58c83d999
1 changed files with 2 additions and 4 deletions

View File

@ -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);
}
}
}