Fix handling Streams.refs in next_incoming
`Streams.inner.ref` doesn't need to be incremented if we don't return an `OpaqueStreamRef`. This prevented the bug in `send_push_promise` from appearing in the tests.
This commit is contained in:
committed by
Sean McArthur
parent
e3a358d696
commit
6d80bd454e
@@ -557,17 +557,16 @@ where
|
||||
pub fn next_incoming(&mut self) -> Option<StreamRef<B>> {
|
||||
let mut me = self.inner.lock().unwrap();
|
||||
let me = &mut *me;
|
||||
let key = me.actions.recv.next_incoming(&mut me.store);
|
||||
// TODO: ideally, OpaqueStreamRefs::new would do this, but we're holding
|
||||
// the lock, so it can't.
|
||||
me.refs += 1;
|
||||
key.map(|key| {
|
||||
me.actions.recv.next_incoming(&mut me.store).map(|key| {
|
||||
let stream = &mut me.store.resolve(key);
|
||||
tracing::trace!(
|
||||
"next_incoming; id={:?}, state={:?}",
|
||||
stream.id,
|
||||
stream.state
|
||||
);
|
||||
// TODO: ideally, OpaqueStreamRefs::new would do this, but we're holding
|
||||
// the lock, so it can't.
|
||||
me.refs += 1;
|
||||
StreamRef {
|
||||
opaque: OpaqueStreamRef::new(self.inner.clone(), stream),
|
||||
send_buffer: self.send_buffer.clone(),
|
||||
|
||||
Reference in New Issue
Block a user