Misc bug fixes related to stream state (#273)
This patch includes two new significant debug assertions: * Assert stream counts are zero when the connection finalizes. * Assert all stream state has been released when the connection is dropped. These two assertions were added in an effort to test the fix provided by #261. In doing so, many related bugs have been discovered and fixed. The details related to these bugs can be found in #273.
This commit is contained in:
		| @@ -4,6 +4,7 @@ use slab; | ||||
|  | ||||
| use indexmap::{self, IndexMap}; | ||||
|  | ||||
| use std::fmt; | ||||
| use std::marker::PhantomData; | ||||
| use std::ops; | ||||
|  | ||||
| @@ -202,6 +203,16 @@ impl Store { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Drop for Store { | ||||
|     fn drop(&mut self) { | ||||
|         use std::thread; | ||||
|  | ||||
|         if !thread::panicking() { | ||||
|             debug_assert!(self.slab.is_empty()); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| // ===== impl Queue ===== | ||||
|  | ||||
| impl<N> Queue<N> | ||||
| @@ -356,6 +367,12 @@ impl<'a> ops::DerefMut for Ptr<'a> { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl<'a> fmt::Debug for Ptr<'a> { | ||||
|     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { | ||||
|         (**self).fmt(fmt) | ||||
|     } | ||||
| } | ||||
|  | ||||
| // ===== impl OccupiedEntry ===== | ||||
|  | ||||
| impl<'a> OccupiedEntry<'a> { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user