From 142bb8f2b9b08353164f4cf5c9cd7cc59e778460 Mon Sep 17 00:00:00 2001 From: Lucio Franco Date: Sun, 1 Sep 2019 13:21:54 -0400 Subject: [PATCH] Fix rustls feature --- tonic/src/transport/openssl.rs | 4 +++- tonic/src/transport/rustls.rs | 18 ++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tonic/src/transport/openssl.rs b/tonic/src/transport/openssl.rs index 8ecd321..c8ece98 100644 --- a/tonic/src/transport/openssl.rs +++ b/tonic/src/transport/openssl.rs @@ -12,6 +12,8 @@ use tokio_openssl::{connect, SslStream}; use tower_make::MakeConnection; use tower_service::Service; +const ALPN_H2: &[u8] = b"\x02h2"; + #[derive(Clone)] pub struct TlsConnector { http: HttpConnector, @@ -23,7 +25,7 @@ impl TlsConnector { pub fn new(ca: Vec, domain: String) -> Result { let mut config = SslConnector::builder(SslMethod::tls()).unwrap(); - config.set_alpn_protos(b"\x06h2").unwrap(); + config.set_alpn_protos(ALPN_H2).unwrap(); let ca = X509::from_pem(&ca[..]).unwrap(); diff --git a/tonic/src/transport/rustls.rs b/tonic/src/transport/rustls.rs index 4f6d022..3353973 100644 --- a/tonic/src/transport/rustls.rs +++ b/tonic/src/transport/rustls.rs @@ -2,12 +2,11 @@ use http::Uri; use hyper::client::connect::HttpConnector; use std::{ future::Future, - path::Path, pin::Pin, sync::Arc, task::{Context, Poll}, }; -use tokio::{fs, net::TcpStream}; +use tokio::net::TcpStream; use tokio_rustls::{ client::TlsStream, rustls::{ClientConfig, Session}, @@ -17,15 +16,17 @@ use tokio_rustls::{ use tower_make::MakeConnection; use tower_service::Service; -const ALPN_H2: &str = "\x02h2"; +const ALPN_H2: &str = "h2"; #[derive(Clone)] pub struct TlsConnector { http: HttpConnector, config: Arc, + domain: String, } impl TlsConnector { + #[cfg_attr(feature = "openssl-1", allow(dead_code))] pub fn new(ca: Vec, domain: String) -> Self { let mut buf = std::io::Cursor::new(ca); @@ -40,6 +41,7 @@ impl TlsConnector { Self { http, config: Arc::new(config), + domain, } } } @@ -57,8 +59,7 @@ impl Service for TlsConnector { } fn call(&mut self, uri: Uri) -> Self::Future { - let auth = uri.authority_part().unwrap(); - let dns = DNSNameRef::try_from_ascii_str("foo.test.google.fr") //auth.host()) + let dns = DNSNameRef::try_from_ascii_str(self.domain.as_str()) .unwrap() .to_owned(); let config = self.config.clone(); @@ -73,10 +74,7 @@ impl Service for TlsConnector { RustlsConnector::from(config) .connect(dns.as_ref(), io) .await - .map_err(|e| { - println!("TLS ERROR={:?}", e); - super::Error::from((super::ErrorKind::Client, e.into())) - }) + .map_err(|e| super::Error::from((super::ErrorKind::Client, e.into()))) .and_then(|conn| { let (_, session) = conn.get_ref(); let negotiated_protocol = session.get_alpn_protocol(); @@ -84,7 +82,7 @@ impl Service for TlsConnector { if Some(ALPN_H2.as_bytes()) == negotiated_protocol.as_ref().map(|x| &**x) { Ok(conn) } else { - Err(super::Error::from(super::ErrorKind::UnableToNegotiateH2).into()) + Err(super::Error::from(super::ErrorKind::Client).into()) } }) };