Propagate async timeout to response body (#503)

This commit is contained in:
Sean McArthur
2019-04-22 15:24:35 -07:00
committed by GitHub
parent ce51fe83d6
commit f6ce085457
4 changed files with 97 additions and 39 deletions

View File

@@ -5,13 +5,15 @@ use std::net::SocketAddr;
use futures::{Async, Future, Poll, Stream};
use futures::stream::Concat2;
use http;
use hyper::{HeaderMap, StatusCode, Version};
use hyper::client::connect::HttpInfo;
use hyper::header::{CONTENT_LENGTH};
use tokio::timer::Delay;
use serde::de::DeserializeOwned;
use serde_json;
use url::Url;
use http;
use cookie;
use super::Decoder;
@@ -31,14 +33,14 @@ pub struct Response {
}
impl Response {
pub(super) fn new(res: ::hyper::Response<::hyper::Body>, url: Url, gzip: bool) -> Response {
pub(super) fn new(res: ::hyper::Response<::hyper::Body>, url: Url, gzip: bool, timeout: Option<Delay>) -> Response {
let (parts, body) = res.into_parts();
let status = parts.status;
let version = parts.version;
let extensions = parts.extensions;
let mut headers = parts.headers;
let decoder = Decoder::detect(&mut headers, Body::wrap(body), gzip);
let decoder = Decoder::detect(&mut headers, Body::response(body, timeout), gzip);
debug!("Response: '{}' for {}", status, url);
Response {