diff --git a/src/blocking/request.rs b/src/blocking/request.rs index e7ac41758..7ac08a768 100644 --- a/src/blocking/request.rs +++ b/src/blocking/request.rs @@ -128,6 +128,7 @@ impl Request { None }; let mut req = Request::new(self.method().clone(), self.url().clone()); + *req.timeout_mut() = self.timeout().copied(); *req.headers_mut() = self.headers().clone(); *req.version_mut() = self.version().clone(); req.body = body; @@ -689,7 +690,7 @@ mod tests { use serde_json; use serde_urlencoded; use std::collections::{BTreeMap, HashMap}; - use std::convert::TryFrom; + use std::time::Duration; #[test] fn basic_get_request() { @@ -1083,4 +1084,16 @@ mod tests { assert_eq!(req.headers()["authorization"], "Bearer Hold my bear"); assert_eq!(req.headers()["authorization"].is_sensitive(), true); } + + #[test] + fn test_request_cloning() { + let mut request = Request::new(Method::GET, "https://example.com".try_into().unwrap()); + *request.timeout_mut() = Some(Duration::from_secs(42)); + *request.version_mut() = Version::HTTP_11; + + let clone = request.try_clone().unwrap(); + assert_eq!(request.version(), clone.version()); + assert_eq!(request.headers(), clone.headers()); + assert_eq!(request.timeout(), clone.timeout()); + } }