Streams receiving peer reset clear pending send (#238)

Because streams that were being peer reset were not clearing pending
send frames / buffered_send_data, they were not being counted towards
the concurrency limit.
This commit is contained in:
Darren Tsung
2018-03-13 12:47:57 -07:00
committed by Sean McArthur
parent 267789da92
commit f8baeb7211
6 changed files with 97 additions and 7 deletions

View File

@@ -255,10 +255,14 @@ where
},
};
let mut send_buffer = self.send_buffer.inner.lock().unwrap();
let send_buffer = &mut *send_buffer;
let actions = &mut me.actions;
me.counts.transition(stream, |_, stream| {
actions.recv.recv_reset(frame, stream)?;
actions.recv.recv_reset(frame, stream);
actions.send.recv_reset(send_buffer, stream);
assert!(stream.state.is_closed());
Ok(())
})