Add tcp_nodelay for Builder

This commit is contained in:
quininer
2019-03-19 11:56:45 +08:00
committed by Sean McArthur
parent f5e7e883c7
commit 47640170bb
3 changed files with 43 additions and 22 deletions

View File

@@ -81,6 +81,7 @@ struct Config {
http2_only: bool,
http1_title_case_headers: bool,
local_address: Option<IpAddr>,
nodelay: bool,
}
impl ClientBuilder {
@@ -115,6 +116,7 @@ impl ClientBuilder {
http2_only: false,
http1_title_case_headers: false,
local_address: None,
nodelay: false
},
}
}
@@ -146,7 +148,7 @@ impl ClientBuilder {
id.add_to_native_tls(&mut tls)?;
}
Connector::new_default_tls(tls, proxies.clone(), config.local_address)?
Connector::new_default_tls(tls, proxies.clone(), config.local_address, config.nodelay)?
},
#[cfg(feature = "rustls-tls")]
TlsBackend::Rustls => {
@@ -175,12 +177,12 @@ impl ClientBuilder {
id.add_to_rustls(&mut tls)?;
}
Connector::new_rustls_tls(tls, proxies.clone(), config.local_address)?
Connector::new_rustls_tls(tls, proxies.clone(), config.local_address, config.nodelay)?
}
}
#[cfg(not(feature = "tls"))]
Connector::new(proxies.clone(), config.local_address)?
Connector::new(proxies.clone(), config.local_address, config.nodelay)?
};
connector.set_timeout(config.connect_timeout);
@@ -215,6 +217,12 @@ impl ClientBuilder {
})
}
/// Set that all sockets have `SO_NODELAY` set to `true`.
pub fn tcp_nodelay(mut self) -> ClientBuilder {
self.config.nodelay = true;
self
}
/// Use native TLS backend.
#[cfg(feature = "default-tls")]
pub fn use_default_tls(mut self) -> ClientBuilder {