diff --git a/src/agent.rs b/src/agent.rs index c53876a..515aac8 100644 --- a/src/agent.rs +++ b/src/agent.rs @@ -54,6 +54,7 @@ pub(crate) struct AgentConfig { pub timeout_read: Option, pub timeout_write: Option, pub timeout: Option, + pub no_delay: bool, pub redirects: u32, pub redirect_auth_headers: RedirectAuthHeaders, pub user_agent: String, @@ -238,6 +239,7 @@ impl AgentBuilder { timeout_read: None, timeout_write: None, timeout: None, + no_delay: true, redirects: 5, redirect_auth_headers: RedirectAuthHeaders::Never, user_agent: format!("ureq/{}", env!("CARGO_PKG_VERSION")), @@ -433,6 +435,26 @@ impl AgentBuilder { self } + /// Whether no_delay will be set on the tcp socket. + /// Setting this to true disables Nagle's algorithm. + /// + /// Defaults to true. + /// + /// ``` + /// # fn main() -> Result<(), ureq::Error> { + /// # ureq::is_test(true); + /// let agent = ureq::builder() + /// .no_delay(false) + /// .build(); + /// let result = agent.get("http://httpbin.org/get").call(); + /// # Ok(()) + /// # } + /// ``` + pub fn no_delay(mut self, no_delay: bool) -> Self { + self.config.no_delay = no_delay; + self + } + /// How many redirects to follow. /// /// Defaults to `5`. Set to `0` to avoid redirects and instead diff --git a/src/stream.rs b/src/stream.rs index a786ba5..91156b4 100644 --- a/src/stream.rs +++ b/src/stream.rs @@ -407,6 +407,8 @@ pub(crate) fn connect_host(unit: &Unit, hostname: &str, port: u16) -> Result