From 1c72006e9390dad7f005821d0c962a01bde653aa Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Wed, 18 Aug 2021 10:57:08 +0200 Subject: [PATCH] fix(h2): improve errors emitted by H2 stream shutdown --- src/proto/h2/mod.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/proto/h2/mod.rs b/src/proto/h2/mod.rs index b8312aff64..f3c10c9dd7 100644 --- a/src/proto/h2/mod.rs +++ b/src/proto/h2/mod.rs @@ -377,9 +377,21 @@ where fn poll_shutdown( mut self: Pin<&mut Self>, - _cx: &mut Context<'_>, + cx: &mut Context<'_>, ) -> Poll> { - Poll::Ready(self.send_stream.write(&[], true)) + if self.send_stream.write(&[], true).is_ok() { + return Poll::Ready(Ok(())) + } + + Poll::Ready(Err(h2_to_io_error( + match ready!(self.send_stream.poll_reset(cx)) { + Ok(Reason::NO_ERROR) | Ok(Reason::CANCEL) | Ok(Reason::STREAM_CLOSED) => { + return Poll::Ready(Ok(())) + } + Ok(reason) => reason.into(), + Err(e) => e, + }, + ))) } }