Skip to content

Commit

Permalink
rpc: Add HTTP timeout, default 30 seconds.
Browse files Browse the repository at this point in the history
Closes #1379.
  • Loading branch information
mdyring committed Nov 14, 2023
1 parent 194d81e commit e2d3913
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion rpc/src/client/transport/http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use core::{

use async_trait::async_trait;
use reqwest::{header, Proxy};
use std::time::Duration;

use tendermint::{block::Height, evidence::Evidence, Hash};
use tendermint_config::net;
Expand Down Expand Up @@ -63,6 +64,7 @@ pub struct Builder {
url: HttpClientUrl,
compat: CompatMode,
proxy_url: Option<HttpClientUrl>,
timeout: Duration,
}

impl Builder {
Expand All @@ -85,9 +87,20 @@ impl Builder {
self
}

/// The timeout is applied from when the request starts connecting until
/// the response body has finished.
///
/// The default is 30 seconds.
pub fn timeout(mut self, duration: Duration) -> Self {
self.timeout = duration;
self
}

/// Try to create a client with the options specified for this builder.
pub fn build(self) -> Result<HttpClient, Error> {
let builder = reqwest::ClientBuilder::new().user_agent(USER_AGENT);
let builder = reqwest::ClientBuilder::new()
.user_agent(USER_AGENT)
.timeout(self.timeout);
let inner = match self.proxy_url {
None => builder.build().map_err(Error::http)?,
Some(proxy_url) => {
Expand Down Expand Up @@ -142,6 +155,7 @@ impl HttpClient {
url,
compat: Default::default(),
proxy_url: None,
timeout: Duration::from_secs(30),
}
}

Expand Down

0 comments on commit e2d3913

Please sign in to comment.