Skip to content

Commit 40669d1

Browse files
committed
Update to rustls 0.12
This is needed in order to fix some recent breakage in ring on nightly builds.
1 parent 4848802 commit 40669d1

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

Cargo.toml

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ repository = "https://github.com/ctz/hyper-rustls"
1111
[dependencies]
1212
futures = "0.1.13"
1313
hyper = "0.11"
14-
rustls = "0.11.0"
14+
rustls = "0.12"
1515
tokio-core = "0.1.7"
1616
tokio-io = "0.1.1"
1717
tokio-proto = "0.1"
18-
tokio-rustls = { version = "0.4.0", features = [ "tokio-proto" ] }
18+
tokio-rustls = { version = "0.5", features = [ "tokio-proto" ] }
1919
tokio-service = "0.1.0"
20-
webpki-roots = "0.13.0"
21-
ct-logs = "0.2.0"
20+
webpki = "0.18.0-alpha"
21+
webpki-roots = "0.14"
22+
ct-logs = "0.3"

examples/server.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ fn main() {
6565
let addr = format!("127.0.0.1:{}", port).parse().unwrap();
6666
let certs = load_certs("examples/sample.pem");
6767
let key = load_private_key("examples/sample.rsa");
68-
let mut cfg = rustls::ServerConfig::new();
68+
let mut cfg = rustls::ServerConfig::new(rustls::NoClientAuth::new());
6969
cfg.set_single_cert(certs, key);
7070
let tls = proto::Server::new(Http::new(), std::sync::Arc::new(cfg));
7171
let tcp = tokio_proto::TcpServer::new(tls, addr);

src/connector.rs

+16-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use stream::MaybeHttpsStream;
88
use tokio_core::reactor::Handle;
99
use tokio_rustls::ClientConfigExt;
1010
use tokio_service::Service;
11+
use webpki::{DNSName, DNSNameRef};
1112
use webpki_roots;
1213
use ct_logs;
1314

@@ -55,8 +56,20 @@ impl Service for HttpsConnector {
5556

5657
fn call(&self, uri: Uri) -> Self::Future {
5758
let is_https = uri.scheme() == Some("https");
58-
let host = match uri.host() {
59-
Some(host) => host.to_owned(),
59+
let host: DNSName = match uri.host() {
60+
Some(host) => match DNSNameRef::try_from_ascii_str(host) {
61+
Ok(host) => host.into(),
62+
Err(err) => return HttpsConnecting(
63+
Box::new(
64+
::futures::future::err(
65+
io::Error::new(
66+
io::ErrorKind::InvalidInput,
67+
format!("invalid url: {:?}", err),
68+
)
69+
)
70+
)
71+
),
72+
},
6073
None => return HttpsConnecting(
6174
Box::new(
6275
::futures::future::err(
@@ -74,7 +87,7 @@ impl Service for HttpsConnector {
7487
let tls = self.tls_config.clone();
7588
Box::new(connecting.and_then(move |tcp| {
7689
tls
77-
.connect_async(&host, tcp)
90+
.connect_async(host.as_ref(), tcp)
7891
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))
7992
}).map(|tls| MaybeHttpsStream::Https(tls))
8093
.map_err(|e| io::Error::new(io::ErrorKind::Other, e)))

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ extern crate tokio_core;
3232
extern crate tokio_io;
3333
extern crate tokio_rustls;
3434
extern crate tokio_service;
35+
extern crate webpki;
3536
extern crate webpki_roots;
3637
extern crate ct_logs;
3738

0 commit comments

Comments
 (0)