diff options
Diffstat (limited to 'ext/http')
-rw-r--r-- | ext/http/01_http.js | 12 | ||||
-rw-r--r-- | ext/http/lib.rs | 17 |
2 files changed, 9 insertions, 20 deletions
diff --git a/ext/http/01_http.js b/ext/http/01_http.js index 152241522..5c9deb5a3 100644 --- a/ext/http/01_http.js +++ b/ext/http/01_http.js @@ -318,13 +318,13 @@ throw error; } } + } - try { - await core.opAsync("op_http_shutdown", streamRid); - } catch (error) { - await reader.cancel(error); - throw error; - } + try { + await core.opAsync("op_http_shutdown", streamRid); + } catch (error) { + await reader.cancel(error); + throw error; } } diff --git a/ext/http/lib.rs b/ext/http/lib.rs index b4a2f0c45..28689654e 100644 --- a/ext/http/lib.rs +++ b/ext/http/lib.rs @@ -729,7 +729,9 @@ async fn op_http_write_resource( } } HttpResponseWriter::BodyUncompressed(body) => { - if let Err(err) = body.send_data(Bytes::from(buf.to_temp())).await { + let mut buf = buf.to_temp(); + buf.truncate(nread); + if let Err(err) = body.send_data(Bytes::from(buf)).await { assert!(err.is_closed()); // Pull up the failure associated with the transport connection instead. http_stream.conn.closed().await?; @@ -740,19 +742,6 @@ async fn op_http_write_resource( _ => unreachable!(), }; } - - let wr = take(&mut *wr); - if let HttpResponseWriter::Body(mut body_writer) = wr { - match body_writer.shutdown().await { - Ok(_) => {} - Err(err) => { - assert_eq!(err.kind(), std::io::ErrorKind::BrokenPipe); - // Don't return "broken pipe", that's an implementation detail. - // Pull up the failure associated with the transport connection instead. - http_stream.conn.closed().await?; - } - } - } Ok(()) } |