]> git.lizzy.rs Git - rust.git/blobdiff - src/librustuv/addrinfo.rs
rollup merge of #17355 : gamazeps/issue17210
[rust.git] / src / librustuv / addrinfo.rs
index daca3005f12ffcd099463bc3211988121dba6d44..995f73af258fff40b5291219a33fb794a7746dd7 100644 (file)
@@ -11,7 +11,7 @@
 use libc::c_int;
 use libc;
 use std::mem;
-use std::ptr::null;
+use std::ptr::{null, null_mut};
 use std::rt::task::BlockedTask;
 use std::rt::rtio;
 
@@ -20,7 +20,7 @@
 use uvll;
 
 struct Addrinfo {
-    handle: *libc::addrinfo,
+    handle: *const libc::addrinfo,
 }
 
 struct Ctx {
@@ -40,7 +40,7 @@ pub fn run(loop_: &Loop, node: Option<&str>, service: Option<&str>,
         let (_c_node, c_node_ptr) = match node {
             Some(n) => {
                 let c_node = n.to_c_str();
-                let c_node_ptr = c_node.with_ref(|r| r);
+                let c_node_ptr = c_node.as_ptr();
                 (Some(c_node), c_node_ptr)
             }
             None => (None, null())
@@ -49,7 +49,7 @@ pub fn run(loop_: &Loop, node: Option<&str>, service: Option<&str>,
         let (_c_service, c_service_ptr) = match service {
             Some(s) => {
                 let c_service = s.to_c_str();
-                let c_service_ptr = c_service.with_ref(|r| r);
+                let c_service_ptr = c_service.as_ptr();
                 (Some(c_service), c_service_ptr)
             }
             None => (None, null())
@@ -62,12 +62,14 @@ pub fn run(loop_: &Loop, node: Option<&str>, service: Option<&str>,
                 ai_socktype: 0,
                 ai_protocol: 0,
                 ai_addrlen: 0,
-                ai_canonname: null(),
-                ai_addr: null(),
-                ai_next: null(),
+                ai_canonname: null_mut(),
+                ai_addr: null_mut(),
+                ai_next: null_mut(),
             }
         });
-        let hint_ptr = hint.as_ref().map_or(null(), |x| x as *libc::addrinfo);
+        let hint_ptr = hint.as_ref().map_or(null(), |x| {
+            x as *const libc::addrinfo
+        });
         let mut req = Request::new(uvll::UV_GETADDRINFO);
 
         return match unsafe {
@@ -80,11 +82,11 @@ pub fn run(loop_: &Loop, node: Option<&str>, service: Option<&str>,
                 let mut cx = Ctx { slot: None, status: 0, addrinfo: None };
 
                 wait_until_woken_after(&mut cx.slot, loop_, || {
-                    req.set_data(&cx);
+                    req.set_data(&mut cx);
                 });
 
                 match cx.status {
-                    0 => Ok(accum_addrinfo(cx.addrinfo.get_ref())),
+                    0 => Ok(accum_addrinfo(cx.addrinfo.as_ref().unwrap())),
                     n => Err(UvError(n))
                 }
             }
@@ -92,9 +94,9 @@ pub fn run(loop_: &Loop, node: Option<&str>, service: Option<&str>,
         };
 
 
-        extern fn getaddrinfo_cb(req: *uvll::uv_getaddrinfo_t,
+        extern fn getaddrinfo_cb(req: *mut uvll::uv_getaddrinfo_t,
                                  status: c_int,
-                                 res: *libc::addrinfo) {
+                                 res: *const libc::addrinfo) {
             let req = Request::wrap(req);
             assert!(status != uvll::ECANCELED);
             let cx: &mut Ctx = unsafe { req.get_data() };
@@ -108,7 +110,7 @@ pub fn run(loop_: &Loop, node: Option<&str>, service: Option<&str>,
 
 impl Drop for Addrinfo {
     fn drop(&mut self) {
-        unsafe { uvll::uv_freeaddrinfo(self.handle) }
+        unsafe { uvll::uv_freeaddrinfo(self.handle as *mut _) }
     }
 }
 
@@ -130,7 +132,7 @@ pub fn accum_addrinfo(addr: &Addrinfo) -> Vec<rtio::AddrinfoInfo> {
                 flags: 0,
             });
             if (*addr).ai_next.is_not_null() {
-                addr = (*addr).ai_next;
+                addr = (*addr).ai_next as *const _;
             } else {
                 break;
             }