Skip to content

Commit 8369a94

Browse files
committed
fix: clone timeout in Request blocking API
`blocking::Request::try_clone()` previously did NOT clone the timeout This commit fixes that. The async API handles this correctly
1 parent 3707436 commit 8369a94

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/blocking/request.rs

+14-1
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ impl Request {
128128
None
129129
};
130130
let mut req = Request::new(self.method().clone(), self.url().clone());
131+
*req.timeout_mut() = self.timeout().copied();
131132
*req.headers_mut() = self.headers().clone();
132133
*req.version_mut() = self.version().clone();
133134
req.body = body;
@@ -689,7 +690,7 @@ mod tests {
689690
use serde_json;
690691
use serde_urlencoded;
691692
use std::collections::{BTreeMap, HashMap};
692-
use std::convert::TryFrom;
693+
use std::time::Duration;
693694

694695
#[test]
695696
fn basic_get_request() {
@@ -1083,4 +1084,16 @@ mod tests {
10831084
assert_eq!(req.headers()["authorization"], "Bearer Hold my bear");
10841085
assert_eq!(req.headers()["authorization"].is_sensitive(), true);
10851086
}
1087+
1088+
#[test]
1089+
fn test_request_cloning() {
1090+
let mut request = Request::new(Method::GET, "https://example.com".try_into().unwrap());
1091+
*request.timeout_mut() = Some(Duration::from_secs(42));
1092+
*request.version_mut() = Version::HTTP_11;
1093+
1094+
let clone = request.try_clone().unwrap();
1095+
assert_eq!(request.version(), clone.version());
1096+
assert_eq!(request.headers(), clone.headers());
1097+
assert_eq!(request.timeout(), clone.timeout());
1098+
}
10861099
}

0 commit comments

Comments
 (0)