Factor out reset on RecvError::Stream (#76)

This commit is contained in:
Eliza Weisman
2017-09-11 15:07:37 -05:00
committed by Carl Lerche
parent 11de86b34e
commit 9448a19408

View File

@@ -114,15 +114,7 @@ impl<B, P> Streams<B, P>
actions.recv.recv_trailers(frame, stream) actions.recv.recv_trailers(frame, stream)
}; };
// TODO: extract this actions.reset_on_recv_stream_err(stream, res)
match res {
Err(RecvError::Stream { reason, .. }) => {
// Reset the stream.
actions.send.send_reset(reason, stream, &mut actions.task);
Ok(())
}
res => res,
}
}) })
} }
@@ -142,14 +134,8 @@ impl<B, P> Streams<B, P>
let actions = &mut me.actions; let actions = &mut me.actions;
me.counts.transition(stream, |_, stream| { me.counts.transition(stream, |_, stream| {
match actions.recv.recv_data(frame, stream) { let res = actions.recv.recv_data(frame, stream);
Err(RecvError::Stream { reason, .. }) => { actions.reset_on_recv_stream_err(stream, res)
// Reset the stream.
actions.send.send_reset(reason, stream, &mut actions.task);
Ok(())
}
res => res,
}
}) })
} }
@@ -649,6 +635,21 @@ impl<B, P> Actions<B, P>
where B: Buf, where B: Buf,
P: Peer, P: Peer,
{ {
fn reset_on_recv_stream_err(&mut self,
stream: &mut store::Ptr<B, P>,
res: Result<(), RecvError>)
-> Result<(), RecvError>
{
if let Err(RecvError::Stream { reason, .. }) = res {
// Reset the stream.
self.send.send_reset(reason, stream, &mut self.task);
Ok(())
} else {
res
}
}
fn ensure_not_idle(&mut self, id: StreamId) fn ensure_not_idle(&mut self, id: StreamId)
-> Result<(), Reason> -> Result<(), Reason>
{ {