Only set nodelay for HTTPS if not already set (#783)
This commit is contained in:
@@ -242,17 +242,23 @@ impl Connector {
|
||||
Inner::DefaultTls(http, tls) => {
|
||||
let mut http = http.clone();
|
||||
|
||||
http.set_nodelay(self.nodelay || (dst.scheme() == Some(&Scheme::HTTPS)));
|
||||
|
||||
// Disable Nagle's algorithm for TLS handshake
|
||||
//
|
||||
// https://www.openssl.org/docs/man1.1.1/man3/SSL_connect.html#NOTES
|
||||
if !self.nodelay && (dst.scheme() == Some(&Scheme::HTTPS)) {
|
||||
http.set_nodelay(true);
|
||||
}
|
||||
|
||||
let tls_connector = tokio_tls::TlsConnector::from(tls.clone());
|
||||
let mut http = hyper_tls::HttpsConnector::from((http, tls_connector));
|
||||
let io = http.call(dst).await?;
|
||||
//TODO: where's this at now?
|
||||
//if let hyper_tls::MaybeHttpsStream::Https(_stream) = &io {
|
||||
// if !no_delay {
|
||||
// stream.set_nodelay(false)?;
|
||||
// }
|
||||
//}
|
||||
|
||||
if let hyper_tls::MaybeHttpsStream::Https(stream) = &io {
|
||||
if !self.nodelay {
|
||||
stream.get_ref().set_nodelay(false)?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(Conn {
|
||||
inner: self.verbose.wrap(io),
|
||||
@@ -266,7 +272,9 @@ impl Connector {
|
||||
// Disable Nagle's algorithm for TLS handshake
|
||||
//
|
||||
// https://www.openssl.org/docs/man1.1.1/man3/SSL_connect.html#NOTES
|
||||
http.set_nodelay(self.nodelay || (dst.scheme() == Some(&Scheme::HTTPS)));
|
||||
if !self.nodelay && (dst.scheme() == Some(&Scheme::HTTPS)) {
|
||||
http.set_nodelay(true);
|
||||
}
|
||||
|
||||
let mut http = hyper_rustls::HttpsConnector::from((http, tls.clone()));
|
||||
let io = http.call(dst).await?;
|
||||
@@ -310,8 +318,7 @@ impl Connector {
|
||||
if dst.scheme() == Some(&Scheme::HTTPS) {
|
||||
let host = dst.host().to_owned();
|
||||
let port = dst.port().map(|p| p.as_u16()).unwrap_or(443);
|
||||
let mut http = http.clone();
|
||||
http.set_nodelay(self.nodelay);
|
||||
let http = http.clone();
|
||||
let tls_connector = tokio_tls::TlsConnector::from(tls.clone());
|
||||
let mut http = hyper_tls::HttpsConnector::from((http, tls_connector));
|
||||
let conn = http.call(proxy_dst).await?;
|
||||
@@ -350,8 +357,7 @@ impl Connector {
|
||||
.ok_or("no host in url")?
|
||||
.to_string();
|
||||
let port = dst.port().map(|r| r.as_u16()).unwrap_or(443);
|
||||
let mut http = http.clone();
|
||||
http.set_nodelay(self.nodelay);
|
||||
let http = http.clone();
|
||||
let mut http = hyper_rustls::HttpsConnector::from((http, tls_proxy.clone()));
|
||||
let tls = tls.clone();
|
||||
let conn = http.call(proxy_dst).await?;
|
||||
|
||||
Reference in New Issue
Block a user