Skip to content

Commit

Permalink
Port "rpc: Add HTTP timeout" (tendermint-rs#1380) (#26)
Browse files Browse the repository at this point in the history
  • Loading branch information
romac authored Apr 25, 2024
1 parent 5f5d86b commit 20b4428
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .changelog/unreleased/improvements/1379-rpc-http-timeout.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Allow specifying a request timeout for the RPC `HttpClient` ([#20](https://github.com/cometbft/cometbft-rs/issues/20))
The `http::Builder` struct now provides a `.timeout(Duration)` method to specify the request timeout.
If not specified, the default value is 30 seconds
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 cometbft::{block::Height, evidence::Evidence, Hash};
use cometbft_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 20b4428

Please sign in to comment.