@@ -1546,12 +1546,12 @@ impl StreamTransportCore {
15461546 let family = socket. bind ( py) . getattr ( "family" ) ?. extract :: < i32 > ( ) ?;
15471547 #[ cfg( unix) ]
15481548 let stream = if family == libc:: AF_UNIX {
1549- StreamKind :: Unix ( unix_stream_from_socket_fd ( fd) ?)
1549+ StreamKind :: Unix ( unix_stream_from_owned_socket_fd ( fd) ?)
15501550 } else {
1551- StreamKind :: Tcp ( tcp_stream_from_socket_fd ( fd) ?)
1551+ StreamKind :: Tcp ( tcp_stream_from_owned_socket_fd ( fd) ?)
15521552 } ;
15531553 #[ cfg( not( unix) ) ]
1554- let stream = StreamKind :: Tcp ( tcp_stream_from_socket_fd ( fd) ?) ;
1554+ let stream = StreamKind :: Tcp ( tcp_stream_from_owned_socket_fd ( fd) ?) ;
15551555
15561556 Ok ( (
15571557 TransportSpawnContext {
@@ -2188,11 +2188,21 @@ pub fn transport_from_socket(
21882188 #[ cfg( unix) ]
21892189 if family == libc:: AF_UNIX {
21902190 let fd = detached_socket_handle ( py, & socket_obj) ?;
2191- return spawn_unix_transport ( py, spawn_context, unix_stream_from_socket_fd ( fd) ?, None ) ;
2191+ return spawn_unix_transport (
2192+ py,
2193+ spawn_context,
2194+ unix_stream_from_owned_socket_fd ( fd) ?,
2195+ None ,
2196+ ) ;
21922197 }
21932198
21942199 let fd = detached_socket_handle ( py, & socket_obj) ?;
2195- spawn_tcp_transport ( py, spawn_context, tcp_stream_from_socket_fd ( fd) ?, None )
2200+ spawn_tcp_transport (
2201+ py,
2202+ spawn_context,
2203+ tcp_stream_from_owned_socket_fd ( fd) ?,
2204+ None ,
2205+ )
21962206}
21972207
21982208pub fn transport_from_socket_tls (
@@ -2220,7 +2230,7 @@ pub fn transport_from_socket_tls(
22202230 return spawn_tls_client_transport (
22212231 py,
22222232 spawn_context,
2223- StreamKind :: Unix ( unix_stream_from_socket_fd ( fd) ?) ,
2233+ StreamKind :: Unix ( unix_stream_from_owned_socket_fd ( fd) ?) ,
22242234 tls,
22252235 None ,
22262236 true ,
@@ -2231,7 +2241,7 @@ pub fn transport_from_socket_tls(
22312241 spawn_tls_client_transport (
22322242 py,
22332243 spawn_context,
2234- StreamKind :: Tcp ( tcp_stream_from_socket_fd ( fd) ?) ,
2244+ StreamKind :: Tcp ( tcp_stream_from_owned_socket_fd ( fd) ?) ,
22352245 tls,
22362246 None ,
22372247 true ,
@@ -2263,7 +2273,7 @@ pub fn transport_from_socket_server_tls(
22632273 return spawn_tls_server_transport (
22642274 py,
22652275 spawn_context,
2266- StreamKind :: Unix ( unix_stream_from_socket_fd ( fd) ?) ,
2276+ StreamKind :: Unix ( unix_stream_from_owned_socket_fd ( fd) ?) ,
22672277 tls,
22682278 None ,
22692279 true ,
@@ -2274,7 +2284,7 @@ pub fn transport_from_socket_server_tls(
22742284 spawn_tls_server_transport (
22752285 py,
22762286 spawn_context,
2277- StreamKind :: Tcp ( tcp_stream_from_socket_fd ( fd) ?) ,
2287+ StreamKind :: Tcp ( tcp_stream_from_owned_socket_fd ( fd) ?) ,
22782288 tls,
22792289 None ,
22802290 true ,
@@ -2576,28 +2586,26 @@ pub fn spawn_write_pipe_transport(
25762586 Ok ( transport)
25772587}
25782588
2579- pub fn tcp_stream_from_socket_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdTcpStream > {
2580- duplicate_configured_tcp_stream ( fd)
2589+ pub fn tcp_stream_from_owned_socket_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdTcpStream > {
2590+ configured_tcp_stream_from_owned_fd ( fd)
25812591}
25822592
25832593#[ cfg( unix) ]
2584- pub fn unix_stream_from_socket_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdUnixStream > {
2585- let dup = fd_ops:: dup_raw_fd ( fd) . map_err ( |err| PyRuntimeError :: new_err ( err. to_string ( ) ) ) ?;
2586- let stream = unsafe { StdUnixStream :: from_raw_fd ( raw_fd_for_std ( dup) ?) } ;
2594+ pub fn unix_stream_from_owned_socket_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdUnixStream > {
2595+ let stream = unsafe { StdUnixStream :: from_raw_fd ( raw_fd_for_std ( fd) ?) } ;
25872596 stream
25882597 . set_nonblocking ( true )
25892598 . map_err ( |err| PyRuntimeError :: new_err ( err. to_string ( ) ) ) ?;
25902599 Ok ( stream)
25912600}
25922601
2593- pub fn tcp_listener_from_socket_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdTcpListener > {
2594- duplicate_configured_tcp_listener ( fd)
2602+ pub fn tcp_listener_from_owned_socket_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdTcpListener > {
2603+ configured_tcp_listener_from_owned_fd ( fd)
25952604}
25962605
25972606#[ cfg( unix) ]
2598- pub fn unix_listener_from_socket_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdUnixListener > {
2599- let dup = fd_ops:: dup_raw_fd ( fd) . map_err ( |err| PyRuntimeError :: new_err ( err. to_string ( ) ) ) ?;
2600- let listener = unsafe { StdUnixListener :: from_raw_fd ( raw_fd_for_std ( dup) ?) } ;
2607+ pub fn unix_listener_from_owned_socket_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdUnixListener > {
2608+ let listener = unsafe { StdUnixListener :: from_raw_fd ( raw_fd_for_std ( fd) ?) } ;
26012609 listener
26022610 . set_nonblocking ( true )
26032611 . map_err ( |err| PyRuntimeError :: new_err ( err. to_string ( ) ) ) ?;
@@ -2606,17 +2614,20 @@ pub fn unix_listener_from_socket_fd(fd: fd_ops::RawFd) -> PyResult<StdUnixListen
26062614
26072615fn duplicate_configured_tcp_stream ( fd : fd_ops:: RawFd ) -> PyResult < StdTcpStream > {
26082616 let dup = fd_ops:: dup_raw_fd ( fd) . map_err ( |err| PyRuntimeError :: new_err ( err. to_string ( ) ) ) ?;
2609- let socket = socket_from_owned_raw ( dup) ?;
2617+ configured_tcp_stream_from_owned_fd ( dup)
2618+ }
2619+
2620+ fn configured_tcp_stream_from_owned_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdTcpStream > {
2621+ let socket = socket_from_owned_raw ( fd) ?;
26102622 socket
26112623 . set_nonblocking ( true )
26122624 . map_err ( |err| PyRuntimeError :: new_err ( err. to_string ( ) ) ) ?;
26132625 let _ = socket. set_tcp_nodelay ( true ) ;
26142626 Ok ( socket. into ( ) )
26152627}
26162628
2617- fn duplicate_configured_tcp_listener ( fd : fd_ops:: RawFd ) -> PyResult < StdTcpListener > {
2618- let dup = fd_ops:: dup_raw_fd ( fd) . map_err ( |err| PyRuntimeError :: new_err ( err. to_string ( ) ) ) ?;
2619- let socket = socket_from_owned_raw ( dup) ?;
2629+ fn configured_tcp_listener_from_owned_fd ( fd : fd_ops:: RawFd ) -> PyResult < StdTcpListener > {
2630+ let socket = socket_from_owned_raw ( fd) ?;
26202631 socket
26212632 . set_nonblocking ( true )
26222633 . map_err ( |err| PyRuntimeError :: new_err ( err. to_string ( ) ) ) ?;
0 commit comments