Switch timeout APIs to use Duration.

This commit is contained in:
Jacob Hoffman-Andrews
2020-10-15 22:04:15 -07:00
committed by Martin Algesten
parent 00e3294ac1
commit 257d4e54dd
3 changed files with 24 additions and 34 deletions

View File

@@ -379,8 +379,8 @@ pub(crate) fn connect_https(unit: &Unit, hostname: &str) -> Result<Stream, Error
}
pub(crate) fn connect_host(unit: &Unit, hostname: &str, port: u16) -> Result<TcpStream, Error> {
let deadline: Option<Instant> = if unit.req.timeout_connect > 0 {
Instant::now().checked_add(Duration::from_millis(unit.req.timeout_connect))
let deadline: Option<Instant> = if let Some(timeout_connect) = unit.req.timeout_connect {
Instant::now().checked_add(timeout_connect)
} else {
unit.deadline
};
@@ -447,30 +447,20 @@ pub(crate) fn connect_host(unit: &Unit, hostname: &str, port: u16) -> Result<Tcp
return Err(err);
};
// rust's absurd api returns Err if we set 0.
// Setting it to None will disable the native system timeout
if let Some(deadline) = deadline {
stream
.set_read_timeout(Some(time_until_deadline(deadline)?))
.ok();
} else if unit.req.timeout_read > 0 {
stream
.set_read_timeout(Some(Duration::from_millis(unit.req.timeout_read as u64)))
.ok();
stream.set_read_timeout(Some(time_until_deadline(deadline)?))?;
} else if let Some(timeout_read) = unit.req.timeout_read {
stream.set_read_timeout(Some(timeout_read))?;
} else {
stream.set_read_timeout(None).ok();
stream.set_read_timeout(None)?;
}
if let Some(deadline) = deadline {
stream
.set_write_timeout(Some(time_until_deadline(deadline)?))
.ok();
} else if unit.req.timeout_write > 0 {
stream
.set_write_timeout(Some(Duration::from_millis(unit.req.timeout_write as u64)))
.ok();
stream.set_write_timeout(Some(time_until_deadline(deadline)?))?;
} else if let Some(timeout_write) = unit.req.timeout_write {
stream.set_write_timeout(Some(timeout_write)).ok();
} else {
stream.set_write_timeout(None).ok();
stream.set_write_timeout(None)?;
}
if proto == Some(Proto::HTTPConnect) {