diff --git a/Cargo.toml b/Cargo.toml index 19f3edd..2ae7151 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,6 +42,9 @@ pretty_env_logger = "0.5" [target.'cfg(any(target_os = "linux", target_os = "macos"))'.dev-dependencies] pnet_datalink = "0.35.0" +[patch.crates-io] +hyper = { git = "https://github.com/hyperium/hyper.git", rev = "6c0d05e40d6bbd8739fc2ef5fecdc4690f083a83" } + [features] default = [] diff --git a/src/common/rewind.rs b/src/common/rewind.rs index c75464e..28dc102 100644 --- a/src/common/rewind.rs +++ b/src/common/rewind.rs @@ -38,9 +38,9 @@ impl Rewind { self.pre = Some(bs); } - // pub(crate) fn into_inner(self) -> (T, Bytes) { - // (self.inner, self.pre.unwrap_or_else(Bytes::new)) - // } + pub(crate) fn into_inner(self) -> (T, Bytes) { + (self.inner, self.pre.unwrap_or_else(Bytes::new)) + } // pub(crate) fn get_mut(&mut self) -> &mut T { // &mut self.inner diff --git a/src/server/conn/auto.rs b/src/server/conn/auto.rs index c6668e9..ebe89db 100644 --- a/src/server/conn/auto.rs +++ b/src/server/conn/auto.rs @@ -139,7 +139,6 @@ impl Builder { let state = match self.version { #[cfg(feature = "http1")] Some(Version::H1) => { - let io = Rewind::new_buffered(io, Bytes::new()); let conn = self.http1.serve_connection(io, service); ConnState::H1 { conn } } @@ -309,7 +308,7 @@ impl<'a, T> std::ops::Deref for Cow<'a, T> { } #[cfg(feature = "http1")] -type Http1Connection = hyper::server::conn::http1::Connection, S>; +type Http1Connection = hyper::server::conn::http1::Connection; #[cfg(not(feature = "http1"))] type Http1Connection = (PhantomData, PhantomData); @@ -426,7 +425,10 @@ where match version { #[cfg(feature = "http1")] Version::H1 => { - let conn = builder.http1.serve_connection(io, service); + let (io, buffered) = io.into_inner(); + let conn = builder + .http1 + .serve_buffered_connection(buffered, io, service); this.state.set(ConnState::H1 { conn }); } #[cfg(feature = "http2")]