diff --git a/CHANGES.md b/CHANGES.md
index 29f78e0b1..b42635b86 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,10 +1,15 @@
# Changes
+
## [2.0.NEXT] - 2020-01-xx
### 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
+
+* Update the `time` dependency to 0.2.5
## [2.0.0] - 2019-12-25
diff --git a/Cargo.toml b/Cargo.toml
index 9f0748e0c..a6783a6db 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -87,7 +87,7 @@ regex = "1.3"
serde = { version = "1.0", features=["derive"] }
serde_json = "1.0"
serde_urlencoded = "0.6.1"
-time = "0.1.42"
+time = { version = "0.2.5", default-features = false, features = ["std"] }
url = "2.1"
open-ssl = { version="0.10", package = "openssl", optional = true }
rust-tls = { version = "0.16.0", package = "rustls", optional = true }
diff --git a/actix-http/CHANGES.md b/actix-http/CHANGES.md
index ee3dae5d5..511ef4f1c 100644
--- a/actix-http/CHANGES.md
+++ b/actix-http/CHANGES.md
@@ -2,6 +2,10 @@
# [Unreleased]
+### Changed
+
+* Update the `time` dependency to 0.2.5
+
### Fixed
* Allow `SameSite=None` cookies to be sent in a response.
diff --git a/actix-http/Cargo.toml b/actix-http/Cargo.toml
index 93aaa756e..cd813e49f 100644
--- a/actix-http/Cargo.toml
+++ b/actix-http/Cargo.toml
@@ -52,7 +52,6 @@ base64 = "0.11"
bitflags = "1.2"
bytes = "0.5.3"
copyless = "0.1.4"
-chrono = "0.4.6"
derive_more = "0.99.2"
either = "1.5.3"
encoding_rs = "0.8"
@@ -77,7 +76,7 @@ serde_json = "1.0"
sha-1 = "0.8"
slab = "0.4"
serde_urlencoded = "0.6.1"
-time = "0.1.42"
+time = { version = "0.2.5", default-features = false, features = ["std"] }
# for secure cookie
ring = { version = "0.16.9", optional = true }
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