From 50918303790805d75521ceeabe168e87eebbbd0f Mon Sep 17 00:00:00 2001 From: Marc-Antoine Perennou Date: Sun, 17 Sep 2017 19:46:05 +0200 Subject: [PATCH] openssl: libressl 2.6.1 dropped suuport for npn Signed-off-by: Marc-Antoine Perennou --- openssl/build.rs | 4 ++++ openssl/src/ssl/mod.rs | 2 ++ openssl/src/ssl/tests/mod.rs | 2 ++ 3 files changed, 8 insertions(+) diff --git a/openssl/build.rs b/openssl/build.rs index 954e9b0c..eb8894fd 100644 --- a/openssl/build.rs +++ b/openssl/build.rs @@ -20,6 +20,10 @@ fn main() { println!("cargo:rustc-cfg=libressl"); } + if let Ok(v) = env::var("DEP_OPENSSL_LIBRESSL_VERSION") { + println!("cargo:rustc-cfg=libressl{}", v); + } + if let Ok(vars) = env::var("DEP_OPENSSL_CONF") { for var in vars.split(",") { println!("cargo:rustc-cfg=osslconf=\"{}\"", var); diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs index dc0f5448..762118a5 100644 --- a/openssl/src/ssl/mod.rs +++ b/openssl/src/ssl/mod.rs @@ -652,6 +652,7 @@ impl SslContextBuilder { /// Set the protocols to be used during Next Protocol Negotiation (the protocols /// supported by the application). + #[cfg(not(libressl261))] pub fn set_npn_protocols(&mut self, protocols: &[&[u8]]) -> Result<(), ErrorStack> { // Firstly, convert the list of protocols to a byte-array that can be passed to OpenSSL // APIs -- a list of length-prefixed strings. @@ -1310,6 +1311,7 @@ impl SslRef { /// /// The protocol's name is returned is an opaque sequence of bytes. It is up to the client /// to interpret it. + #[cfg(not(libressl261))] pub fn selected_npn_protocol(&self) -> Option<&[u8]> { unsafe { let mut data: *const c_uchar = ptr::null(); diff --git a/openssl/src/ssl/tests/mod.rs b/openssl/src/ssl/tests/mod.rs index cfad9cca..b23de763 100644 --- a/openssl/src/ssl/tests/mod.rs +++ b/openssl/src/ssl/tests/mod.rs @@ -503,6 +503,7 @@ fn test_connect_with_unilateral_alpn() { /// Tests that connecting with the client using NPN, but the server not does not /// break the existing connection behavior. #[test] +#[cfg(not(libressl261))] fn test_connect_with_unilateral_npn() { let (_s, stream) = Server::new(); let mut ctx = SslContext::builder(SslMethod::tls()).unwrap(); @@ -615,6 +616,7 @@ fn test_connect_with_npn_successful_single_match() { /// Tests that when the `SslStream` is created as a server stream, the protocols /// are correctly advertised to the client. #[test] +#[cfg(not(libressl261))] fn test_npn_server_advertise_multiple() { let listener = TcpListener::bind("127.0.0.1:0").unwrap(); let localhost = listener.local_addr().unwrap();