File tree Expand file tree Collapse file tree 4 files changed +22
-20
lines changed Expand file tree Collapse file tree 4 files changed +22
-20
lines changed Original file line number Diff line number Diff line change @@ -116,9 +116,7 @@ impl OwnedHandle {
116
116
/// Creates a new `OwnedHandle` instance that shares the same underlying file handle
117
117
/// as the existing `OwnedHandle` instance.
118
118
pub fn try_clone ( & self ) -> crate :: io:: Result < Self > {
119
- let handle = self . duplicate ( 0 , false , c:: DUPLICATE_SAME_ACCESS ) ?;
120
-
121
- Ok ( unsafe { OwnedHandle :: from_raw_handle ( handle) } )
119
+ self . duplicate ( 0 , false , c:: DUPLICATE_SAME_ACCESS )
122
120
}
123
121
124
122
pub ( crate ) fn duplicate (
Original file line number Diff line number Diff line change @@ -93,7 +93,7 @@ impl OwnedSocket {
93
93
} ;
94
94
95
95
if socket != c:: INVALID_SOCKET {
96
- unsafe { Ok ( Self ( OwnedSocket :: from_raw_socket ( socket) ) ) }
96
+ unsafe { Ok ( OwnedSocket :: from_raw_socket ( socket) ) }
97
97
} else {
98
98
let error = unsafe { c:: WSAGetLastError ( ) } ;
99
99
@@ -117,12 +117,25 @@ impl OwnedSocket {
117
117
}
118
118
119
119
unsafe {
120
- let socket = Self ( OwnedSocket :: from_raw_socket ( socket) ) ;
120
+ let socket = OwnedSocket :: from_raw_socket ( socket) ;
121
121
socket. set_no_inherit ( ) ?;
122
122
Ok ( socket)
123
123
}
124
124
}
125
125
}
126
+
127
+ #[ cfg( not( target_vendor = "uwp" ) ) ]
128
+ pub ( crate ) fn set_no_inherit ( & self ) -> io:: Result < ( ) > {
129
+ sys:: cvt ( unsafe {
130
+ c:: SetHandleInformation ( self . as_raw_socket ( ) as c:: HANDLE , c:: HANDLE_FLAG_INHERIT , 0 )
131
+ } )
132
+ . map ( drop)
133
+ }
134
+
135
+ #[ cfg( target_vendor = "uwp" ) ]
136
+ pub ( crate ) fn set_no_inherit ( & self ) -> io:: Result < ( ) > {
137
+ Err ( io:: Error :: new_const ( io:: ErrorKind :: Unsupported , & "Unavailable on UWP" ) )
138
+ }
126
139
}
127
140
128
141
/// Returns the last error from the Windows socket interface.
Original file line number Diff line number Diff line change @@ -229,12 +229,16 @@ impl Handle {
229
229
Ok ( written as usize )
230
230
}
231
231
232
+ pub fn try_clone ( & self ) -> io:: Result < Self > {
233
+ Ok ( Self ( self . 0 . try_clone ( ) ?) )
234
+ }
235
+
232
236
pub fn duplicate (
233
237
& self ,
234
238
access : c:: DWORD ,
235
239
inherit : bool ,
236
240
options : c:: DWORD ,
237
- ) -> io:: Result < Handle > {
241
+ ) -> io:: Result < Self > {
238
242
Ok ( Self ( self . 0 . duplicate ( access, inherit, options) ?) )
239
243
}
240
244
}
Original file line number Diff line number Diff line change @@ -129,7 +129,7 @@ impl Socket {
129
129
130
130
unsafe {
131
131
let socket = Self :: from_raw_socket ( socket) ;
132
- socket. set_no_inherit ( ) ?;
132
+ socket. 0 . set_no_inherit ( ) ?;
133
133
Ok ( socket)
134
134
}
135
135
}
@@ -371,19 +371,6 @@ impl Socket {
371
371
}
372
372
}
373
373
374
- #[ cfg( not( target_vendor = "uwp" ) ) ]
375
- fn set_no_inherit ( & self ) -> io:: Result < ( ) > {
376
- sys:: cvt ( unsafe {
377
- c:: SetHandleInformation ( self . as_raw_socket ( ) as c:: HANDLE , c:: HANDLE_FLAG_INHERIT , 0 )
378
- } )
379
- . map ( drop)
380
- }
381
-
382
- #[ cfg( target_vendor = "uwp" ) ]
383
- fn set_no_inherit ( & self ) -> io:: Result < ( ) > {
384
- Err ( io:: Error :: new_const ( io:: ErrorKind :: Unsupported , & "Unavailable on UWP" ) )
385
- }
386
-
387
374
pub fn shutdown ( & self , how : Shutdown ) -> io:: Result < ( ) > {
388
375
let how = match how {
389
376
Shutdown :: Write => c:: SD_SEND ,
You can’t perform that action at this time.
0 commit comments