@@ -37,15 +37,7 @@ pub fn init() {}
3737pub struct Socket ( FileDesc ) ;
3838
3939impl 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 > {
4941 let fd = cvt ( unsafe { netc:: socket ( fam, ty, 0 ) } ) ?;
5042 Ok ( Socket ( unsafe { FileDesc :: from_raw_fd ( fd) } ) )
5143 }
@@ -242,11 +234,11 @@ impl Socket {
242234 None => netc:: timeval { tv_sec : 0 , tv_usec : 0 } ,
243235 } ;
244236
245- setsockopt ( self , netc:: SOL_SOCKET , kind, timeout)
237+ unsafe { setsockopt ( self , netc:: SOL_SOCKET , kind, timeout) }
246238 }
247239
248240 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) ? } ;
250242 if raw. tv_sec == 0 && raw. tv_usec == 0 {
251243 Ok ( None )
252244 } else {
@@ -272,22 +264,22 @@ impl Socket {
272264 l_linger : linger. unwrap_or_default ( ) . as_secs ( ) as libc:: c_int ,
273265 } ;
274266
275- setsockopt ( self , netc:: SOL_SOCKET , netc:: SO_LINGER , linger)
267+ unsafe { setsockopt ( self , netc:: SOL_SOCKET , netc:: SO_LINGER , linger) }
276268 }
277269
278270 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 ) ? } ;
280272
281273 Ok ( ( val. l_onoff != 0 ) . then ( || Duration :: from_secs ( val. l_linger as u64 ) ) )
282274 }
283275
284276 pub fn set_nodelay ( & self , nodelay : bool ) -> io:: Result < ( ) > {
285277 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) }
287279 }
288280
289281 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 ) ? } ;
291283 Ok ( raw != 0 )
292284 }
293285
@@ -304,7 +296,7 @@ impl Socket {
304296 }
305297
306298 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 ) ? } ;
308300 if raw == 0 { Ok ( None ) } else { Ok ( Some ( io:: Error :: from_raw_os_error ( raw as i32 ) ) ) }
309301 }
310302
0 commit comments