@@ -37,15 +37,7 @@ pub fn init() {}
37
37
pub struct Socket ( FileDesc ) ;
38
38
39
39
impl Socket {
40
- pub fn new ( addr : & SocketAddr , ty : i32 ) -> io:: Result < Socket > {
41
- let fam = match * addr {
42
- SocketAddr :: V4 ( ..) => netc:: AF_INET ,
43
- SocketAddr :: V6 ( ..) => netc:: AF_INET6 ,
44
- } ;
45
- Socket :: new_raw ( fam, ty)
46
- }
47
-
48
- pub fn new_raw ( fam : i32 , ty : i32 ) -> io:: Result < Socket > {
40
+ pub fn new ( fam : i32 , ty : i32 ) -> io:: Result < Socket > {
49
41
let fd = cvt ( unsafe { netc:: socket ( fam, ty, 0 ) } ) ?;
50
42
Ok ( Socket ( unsafe { FileDesc :: from_raw_fd ( fd) } ) )
51
43
}
@@ -242,11 +234,11 @@ impl Socket {
242
234
None => netc:: timeval { tv_sec : 0 , tv_usec : 0 } ,
243
235
} ;
244
236
245
- setsockopt ( self , netc:: SOL_SOCKET , kind, timeout)
237
+ unsafe { setsockopt ( self , netc:: SOL_SOCKET , kind, timeout) }
246
238
}
247
239
248
240
pub fn timeout ( & self , kind : i32 ) -> io:: Result < Option < Duration > > {
249
- let raw: netc:: timeval = getsockopt ( self , netc:: SOL_SOCKET , kind) ?;
241
+ let raw: netc:: timeval = unsafe { getsockopt ( self , netc:: SOL_SOCKET , kind) ? } ;
250
242
if raw. tv_sec == 0 && raw. tv_usec == 0 {
251
243
Ok ( None )
252
244
} else {
@@ -272,22 +264,22 @@ impl Socket {
272
264
l_linger : linger. unwrap_or_default ( ) . as_secs ( ) as libc:: c_int ,
273
265
} ;
274
266
275
- setsockopt ( self , netc:: SOL_SOCKET , netc:: SO_LINGER , linger)
267
+ unsafe { setsockopt ( self , netc:: SOL_SOCKET , netc:: SO_LINGER , linger) }
276
268
}
277
269
278
270
pub fn linger ( & self ) -> io:: Result < Option < Duration > > {
279
- let val: netc:: linger = getsockopt ( self , netc:: SOL_SOCKET , netc:: SO_LINGER ) ?;
271
+ let val: netc:: linger = unsafe { getsockopt ( self , netc:: SOL_SOCKET , netc:: SO_LINGER ) ? } ;
280
272
281
273
Ok ( ( val. l_onoff != 0 ) . then ( || Duration :: from_secs ( val. l_linger as u64 ) ) )
282
274
}
283
275
284
276
pub fn set_nodelay ( & self , nodelay : bool ) -> io:: Result < ( ) > {
285
277
let value: i32 = if nodelay { 1 } else { 0 } ;
286
- setsockopt ( self , netc:: IPPROTO_TCP , netc:: TCP_NODELAY , value)
278
+ unsafe { setsockopt ( self , netc:: IPPROTO_TCP , netc:: TCP_NODELAY , value) }
287
279
}
288
280
289
281
pub fn nodelay ( & self ) -> io:: Result < bool > {
290
- let raw: i32 = getsockopt ( self , netc:: IPPROTO_TCP , netc:: TCP_NODELAY ) ?;
282
+ let raw: i32 = unsafe { getsockopt ( self , netc:: IPPROTO_TCP , netc:: TCP_NODELAY ) ? } ;
291
283
Ok ( raw != 0 )
292
284
}
293
285
@@ -304,7 +296,7 @@ impl Socket {
304
296
}
305
297
306
298
pub fn take_error ( & self ) -> io:: Result < Option < io:: Error > > {
307
- let raw: c_int = getsockopt ( self , libc:: SOL_SOCKET , libc:: SO_ERROR ) ?;
299
+ let raw: c_int = unsafe { getsockopt ( self , libc:: SOL_SOCKET , libc:: SO_ERROR ) ? } ;
308
300
if raw == 0 { Ok ( None ) } else { Ok ( Some ( io:: Error :: from_raw_os_error ( raw as i32 ) ) ) }
309
301
}
310
302
0 commit comments