@@ -5,6 +5,7 @@ use std::{
55 time:: Duration ,
66} ;
77
8+ use bufstream:: BufStream ;
89use derivative:: Derivative ;
910use webpki:: DNSNameRef ;
1011
@@ -28,10 +29,13 @@ pub(super) enum Stream {
2829 Null ,
2930
3031 /// A basic TCP connection to the server.
31- Tcp ( TcpStream ) ,
32+ Tcp ( BufStream < TcpStream > ) ,
3233
3334 /// A TLS connection over TCP.
34- Tls ( #[ derivative( Debug = "ignore" ) ] rustls:: StreamOwned < rustls:: ClientSession , TcpStream > ) ,
35+ Tls (
36+ #[ derivative( Debug = "ignore" ) ]
37+ BufStream < rustls:: StreamOwned < rustls:: ClientSession , TcpStream > > ,
38+ ) ,
3539}
3640
3741impl Stream {
@@ -54,6 +58,7 @@ impl Stream {
5458 TcpStream :: connect_timeout ( & socket_addrs[ 0 ] , timeout) ?
5559 } ;
5660 inner. set_nodelay ( true ) ?;
61+ let inner = inner;
5762
5863 match tls_options {
5964 Some ( cfg) => {
@@ -63,9 +68,11 @@ impl Stream {
6368
6469 let session = rustls:: ClientSession :: new ( & Arc :: new ( tls_config) , name) ;
6570
66- Ok ( Stream :: Tls ( rustls:: StreamOwned :: new ( session, inner) ) )
71+ Ok ( Stream :: Tls ( BufStream :: new ( rustls:: StreamOwned :: new (
72+ session, inner,
73+ ) ) ) )
6774 }
68- None => Ok ( Self :: Tcp ( inner) ) ,
75+ None => Ok ( Self :: Tcp ( BufStream :: new ( inner) ) ) ,
6976 }
7077 }
7178}
0 commit comments