@@ -77,8 +77,9 @@ impl AsyncTcpStream {
77
77
stream. set_nodelay ( true ) ?;
78
78
79
79
let socket = socket2:: Socket :: from ( stream. into_std ( ) ?) ;
80
- socket. set_keepalive ( Some ( KEEPALIVE_TIME ) ) ?;
81
- let std_stream = socket. into_tcp_stream ( ) ;
80
+ let conf = socket2:: TcpKeepalive :: new ( ) . with_time ( KEEPALIVE_TIME ) ;
81
+ socket. set_tcp_keepalive ( & conf) ?;
82
+ let std_stream = std:: net:: TcpStream :: from ( socket) ;
82
83
let stream = TcpStream :: from_std ( std_stream) ?;
83
84
84
85
Ok ( stream. into ( ) )
@@ -89,12 +90,10 @@ impl AsyncTcpStream {
89
90
use async_std:: net:: TcpStream ;
90
91
use socket2:: { Domain , Protocol , SockAddr , Socket , Type } ;
91
92
92
- let domain = match address {
93
- SocketAddr :: V4 ( _) => Domain :: ipv4 ( ) ,
94
- SocketAddr :: V6 ( _) => Domain :: ipv6 ( ) ,
95
- } ;
96
- let socket = Socket :: new ( domain, Type :: stream ( ) , Some ( Protocol :: tcp ( ) ) ) ?;
97
- socket. set_keepalive ( Some ( KEEPALIVE_TIME ) ) ?;
93
+ let domain = Domain :: for_address ( * address) ;
94
+ let socket = Socket :: new ( domain, Type :: STREAM , Some ( Protocol :: TCP ) ) ?;
95
+ let conf = socket2:: TcpKeepalive :: new ( ) . with_time ( KEEPALIVE_TIME ) ;
96
+ socket. set_tcp_keepalive ( & conf) ?;
98
97
99
98
let address: SockAddr = address. clone ( ) . into ( ) ;
100
99
if connect_timeout == Duration :: from_secs ( 0 ) {
@@ -103,7 +102,7 @@ impl AsyncTcpStream {
103
102
socket. connect_timeout ( & address, connect_timeout) ?;
104
103
}
105
104
106
- let stream: TcpStream = socket . into_tcp_stream ( ) . into ( ) ;
105
+ let stream: TcpStream = std :: net :: TcpStream :: from ( socket ) . into ( ) ;
107
106
stream. set_nodelay ( true ) ?;
108
107
109
108
Ok ( stream. into ( ) )
0 commit comments