File: nix-0.27.patch

package info (click to toggle)
rust-ttrpc 0.8.2-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 596 kB
  • sloc: makefile: 29
file content (92 lines) | stat: -rw-r--r-- 2,988 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Index: ttrpc/Cargo.toml
===================================================================
--- ttrpc.orig/Cargo.toml
+++ ttrpc/Cargo.toml
@@ -55,7 +55,8 @@ features = ["extra_traits"]
 version = "0.4"
 
 [dependencies.nix]
-version = "0.26.2"
+version = "0.27"
+features = ["fs", "socket"]
 
 [dependencies.protobuf]
 version = "2.14"
@@ -91,5 +92,5 @@ default = ["sync"]
 sync = []
 
 [target."cfg(any(target_os = \"linux\", target_os = \"android\"))".dependencies.tokio-vsock]
-version = "0.4.0"
+version = "0.7.0"
 optional = true
Index: ttrpc/src/common.rs
===================================================================
--- ttrpc.orig/src/common.rs
+++ ttrpc/src/common.rs
@@ -14,6 +14,8 @@ use nix::fcntl::FdFlag;
 use nix::fcntl::{fcntl, FcntlArg, OFlag};
 use nix::sys::socket::*;
 use std::os::unix::io::RawFd;
+use std::os::fd::IntoRawFd;
+use std::os::fd::BorrowedFd;
 
 use crate::error::{Error, Result};
 
@@ -31,7 +33,8 @@ pub(crate) fn do_listen(listener: RawFd)
         )));
     }
 
-    listen(listener, 10).map_err(|e| Error::Socket(e.to_string()))
+    let listener = unsafe { BorrowedFd::borrow_raw(listener) };
+    listen(&listener, 10).map_err(|e| Error::Socket(e.to_string()))
 }
 
 #[cfg(any(target_os = "linux", target_os = "android"))]
@@ -114,7 +117,7 @@ fn make_socket(addr: (&str, u32)) -> Res
         #[cfg(target_os = "macos")]
         set_fd_close_exec(fd)?;
         let sockaddr = make_addr(domain, sockaddr)?;
-        Ok((fd, Box::new(sockaddr)))
+        Ok((fd.into_raw_fd(), Box::new(sockaddr)))
     };
 
     let (fd, sockaddr): (i32, Box<dyn SockaddrLike>) = match domain {
@@ -139,7 +142,7 @@ fn make_socket(addr: (&str, u32)) -> Res
             .map_err(|e| Error::Socket(e.to_string()))?;
             let cid = addr.1;
             let sockaddr = VsockAddr::new(cid, port);
-            (fd, Box::new(sockaddr))
+            (fd.into_raw_fd(), Box::new(sockaddr))
         }
     };
 
@@ -159,7 +162,7 @@ const VMADDR_CID_HOST: u32 = 0;
 pub(crate) fn do_bind(sockaddr: &str) -> Result<(RawFd, Domain)> {
     let (fd, domain, sockaddr) = make_socket((sockaddr, VMADDR_CID_ANY))?;
 
-    setsockopt(fd, sockopt::ReusePort, &true)?;
+    setsockopt(unsafe{&BorrowedFd::borrow_raw(fd)}, sockopt::ReusePort, &true)?;
     bind(fd, sockaddr.as_ref()).map_err(err_to_others_err!(e, ""))?;
 
     Ok((fd, domain))
Index: ttrpc/src/sync/sys/unix/net.rs
===================================================================
--- ttrpc.orig/src/sync/sys/unix/net.rs
+++ ttrpc/src/sync/sys/unix/net.rs
@@ -18,6 +18,7 @@ use nix::sys::socket::*;
 use std::io::{self};
 use std::os::unix::io::RawFd;
 use std::os::unix::prelude::AsRawFd;
+use std::os::fd::IntoRawFd;
 use nix::Error;
 
 use nix::unistd::*;
@@ -255,7 +256,7 @@ impl ClientConnection {
 
         ClientConnection { 
             fd, 
-            socket_pair: (recver_fd, close_fd) 
+            socket_pair: (recver_fd.into_raw_fd(), close_fd.into_raw_fd()) 
         }
     }