Only enable rustls if native-tls is not enabled

pull/166/head
Dominik Nakamura 4 years ago
parent a8dcc752b5
commit de808a3a01
No known key found for this signature in database
GPG Key ID: E4C6A749B2491910
  1. 2
      src/client.rs
  2. 14
      src/error.rs
  3. 3
      src/lib.rs
  4. 4
      src/stream.rs
  5. 2
      tests/connection_reset.rs

@ -47,7 +47,7 @@ mod encryption {
}
}
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
mod encryption {
use rustls::ClientConfig;
pub use rustls::{ClientSession, StreamOwned};

@ -11,7 +11,7 @@ pub mod tls {
pub use native_tls::Error;
}
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
pub mod tls {
//! TLS error wrapper module, feature-gated.
pub use rustls::TLSError as Error;
@ -50,10 +50,10 @@ pub enum Error {
#[cfg(feature = "use-native-tls")]
/// TLS error
Tls(tls::Error),
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
/// TLS error
Tls(tls::Error),
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
/// DNS name resolution error.
Dns(tls::DnsError),
/// - When reading: buffer capacity exhausted.
@ -82,9 +82,9 @@ impl fmt::Display for Error {
Error::Io(ref err) => write!(f, "IO error: {}", err),
#[cfg(feature = "use-native-tls")]
Error::Tls(ref err) => write!(f, "TLS error: {}", err),
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
Error::Tls(ref err) => write!(f, "TLS error: {}", err),
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
Error::Dns(ref err) => write!(f, "Invalid DNS name: {}", err),
Error::Capacity(ref msg) => write!(f, "Space limit exceeded: {}", msg),
Error::Protocol(ref msg) => write!(f, "WebSocket protocol error: {}", msg),
@ -160,14 +160,14 @@ impl From<tls::Error> for Error {
}
}
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
impl From<tls::Error> for Error {
fn from(err: tls::Error) -> Self {
Error::Tls(err)
}
}
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
impl From<tls::DnsError> for Error {
fn from(err: tls::DnsError) -> Self {
Error::Dns(err)

@ -29,6 +29,3 @@ pub use crate::{
protocol::{Message, WebSocket},
server::{accept, accept_hdr},
};
#[cfg(all(feature = "use-native-tls", feature = "use-rustls"))]
compile_error!("either \"use-native-tls\" or \"use-rustls\" can be enabled, but not both.");

@ -10,7 +10,7 @@ use std::net::TcpStream;
#[cfg(feature = "use-native-tls")]
use native_tls::TlsStream;
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
use rustls::StreamOwned as TlsStream;
/// Stream mode, either plain TCP or TLS.
@ -41,7 +41,7 @@ impl<S: Read + Write + NoDelay> NoDelay for TlsStream<S> {
}
}
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
impl<S: rustls::Session, T: Read + Write + NoDelay> NoDelay for TlsStream<S, T> {
fn set_nodelay(&mut self, nodelay: bool) -> IoResult<()> {
self.sock.set_nodelay(nodelay)

@ -15,7 +15,7 @@ use url::Url;
#[cfg(feature = "use-native-tls")]
type Sock = WebSocket<Stream<TcpStream, native_tls::TlsStream<TcpStream>>>;
#[cfg(feature = "use-rustls")]
#[cfg(all(feature = "use-rustls", not(feature = "use-native-tls")))]
type Sock = WebSocket<Stream<TcpStream, rustls::StreamOwned<rustls::ClientSession, TcpStream>>>;
fn do_test<CT, ST>(port: u16, client_task: CT, server_task: ST)

Loading…
Cancel
Save