diff --git a/CHANGES.md b/CHANGES.md
index 29f78e0b1..4143f78d9 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -4,7 +4,9 @@
### Changed
-* Use `sha-1` crate instead of unmaintained `sha1` crate
+* Use `sha-1` crate instead of unmaintained `sha1` crate
+
+* Skip empty chunks when returning response from a `Stream` #1308
## [2.0.0] - 2019-12-25
diff --git a/actix-http/src/body.rs b/actix-http/src/body.rs
index 850f97ee4..881764439 100644
--- a/actix-http/src/body.rs
+++ b/actix-http/src/body.rs
@@ -5,6 +5,7 @@ use std::{fmt, mem};
use bytes::{Bytes, BytesMut};
use futures_core::Stream;
+use futures_util::ready;
use pin_project::{pin_project, project};
use crate::error::Error;
@@ -389,12 +390,19 @@ where
BodySize::Stream
}
+ /// Attempts to pull out the next value of the underlying [`Stream`].
+ ///
+ /// Empty values are skipped to prevent [`BodyStream`]'s transmission being
+ /// ended on a zero-length chunk, but rather proceed until the underlying
+ /// [`Stream`] ends.
fn poll_next(&mut self, cx: &mut Context<'_>) -> Poll