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:
@@ -258,6 +258,13 @@ impl Mock<frame::GoAway> {
|
||||
frame::Reason::FRAME_SIZE_ERROR,
|
||||
))
|
||||
}
|
||||
|
||||
pub fn no_error(self) -> Self {
|
||||
Mock(frame::GoAway::new(
|
||||
self.0.last_stream_id(),
|
||||
frame::Reason::NO_ERROR,
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Mock<frame::GoAway>> for SendFrame {
|
||||
|
||||
@@ -839,6 +839,7 @@ fn rst_while_closing() {
|
||||
// Send the RST_STREAM frame which causes the client to panic.
|
||||
.send_frame(frames::reset(1).cancel())
|
||||
.ping_pong([1; 8])
|
||||
.recv_frame(frames::go_away(0).no_error())
|
||||
.close();
|
||||
;
|
||||
|
||||
@@ -1038,6 +1039,7 @@ fn send_err_with_buffered_data() {
|
||||
.recv_frame(
|
||||
frames::data(1, vec![0; 16_384]))
|
||||
.recv_frame(frames::reset(1).cancel())
|
||||
.recv_frame(frames::go_away(0).no_error())
|
||||
.close()
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user