diff --git a/Cargo.toml b/Cargo.toml index 94b54d9..901bf9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,9 +16,9 @@ vendored = ["native-tls/vendored"] [dependencies] bytes = "0.5" native-tls = "0.2" -hyper = { version = "0.13", default-features = false, features = ["tcp"] } -tokio = { version = "0.2" } -tokio-tls = "0.3" +hyper = { git = "https://github.com/hyperium/hyper.git", default-features = false, features = ["tcp"] } +tokio = { version = "0.3" } +tokio-native-tls = "0.2" [dev-dependencies] -tokio = { version = "0.2", features = ["io-std", "macros"] } +tokio = { version = "0.3", features = ["full"] } diff --git a/src/client.rs b/src/client.rs index a0cf624..1f4f8c2 100644 --- a/src/client.rs +++ b/src/client.rs @@ -5,7 +5,7 @@ use std::task::{Context, Poll}; use hyper::{client::connect::HttpConnector, service::Service, Uri}; use tokio::io::{AsyncRead, AsyncWrite}; -use tokio_tls::TlsConnector; +use tokio_native_tls::TlsConnector; use crate::stream::MaybeHttpsStream; diff --git a/src/stream.rs b/src/stream.rs index a924c2c..6ff39c5 100644 --- a/src/stream.rs +++ b/src/stream.rs @@ -3,10 +3,9 @@ use std::io; use std::pin::Pin; use std::task::{Context, Poll}; -use bytes::{Buf, BufMut}; use hyper::client::connect::{Connected, Connection}; -use tokio::io::{AsyncRead, AsyncWrite}; -pub use tokio_tls::TlsStream; +use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; +pub use tokio_native_tls::TlsStream; /// A stream that might be protected with TLS. pub enum MaybeHttpsStream { @@ -40,37 +39,17 @@ impl From> for MaybeHttpsStream { } impl AsyncRead for MaybeHttpsStream { - #[inline] - unsafe fn prepare_uninitialized_buffer(&self, buf: &mut [std::mem::MaybeUninit]) -> bool { - match self { - MaybeHttpsStream::Http(s) => s.prepare_uninitialized_buffer(buf), - MaybeHttpsStream::Https(s) => s.prepare_uninitialized_buffer(buf), - } - } - #[inline] fn poll_read( self: Pin<&mut Self>, - cx: &mut Context, - buf: &mut [u8], - ) -> Poll> { + cx: &mut Context<'_>, + buf: &mut ReadBuf<'_>, + ) -> Poll> { match Pin::get_mut(self) { MaybeHttpsStream::Http(s) => Pin::new(s).poll_read(cx, buf), MaybeHttpsStream::Https(s) => Pin::new(s).poll_read(cx, buf), } } - - #[inline] - fn poll_read_buf( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut B, - ) -> Poll> { - match Pin::get_mut(self) { - MaybeHttpsStream::Http(s) => Pin::new(s).poll_read_buf(cx, buf), - MaybeHttpsStream::Https(s) => Pin::new(s).poll_read_buf(cx, buf), - } - } } impl AsyncWrite for MaybeHttpsStream { @@ -86,18 +65,6 @@ impl AsyncWrite for MaybeHttpsStream { } } - #[inline] - fn poll_write_buf( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut B, - ) -> Poll> { - match Pin::get_mut(self) { - MaybeHttpsStream::Http(s) => Pin::new(s).poll_write_buf(cx, buf), - MaybeHttpsStream::Https(s) => Pin::new(s).poll_write_buf(cx, buf), - } - } - #[inline] fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { match Pin::get_mut(self) { @@ -119,7 +86,7 @@ impl Connection for MaybeHttpsSt fn connected(&self) -> Connected { match self { MaybeHttpsStream::Http(s) => s.connected(), - MaybeHttpsStream::Https(s) => s.get_ref().connected(), + MaybeHttpsStream::Https(s) => s.get_ref().get_ref().get_ref().connected(), } } }