From e8bcf3cb4e79d675144b0107ffccdafc38137b5e Mon Sep 17 00:00:00 2001 From: James Sturtevant Date: Fri, 12 May 2023 13:02:16 -0700 Subject: [PATCH 1/2] Update dependencies for the main ttrpc project Updates the dependencies for the main ttrpc project Signed-off-by: James Sturtevant --- Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 897e4d89..baf3fcf5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ description = "A Rust version of ttrpc." [dependencies] protobuf = { version = "3.1.0" } libc = { version = "0.2.59", features = [ "extra_traits" ] } -nix = "0.23.0" +nix = "0.26.2" log = "0.4" byteorder = "1.3.2" thiserror = "1.0" @@ -22,10 +22,10 @@ tokio = { version = "1", features = ["rt", "sync", "io-util", "macros", "time"], futures = { version = "0.3", optional = true } [target.'cfg(windows)'.dependencies] -windows-sys = {version = "0.45", features = [ "Win32_Foundation", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_Pipes", "Win32_Security", "Win32_System_Threading"]} +windows-sys = {version = "0.48", features = [ "Win32_Foundation", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_Pipes", "Win32_Security", "Win32_System_Threading"]} [target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies] -tokio-vsock = { version = "0.3.1", optional = true } +tokio-vsock = { version = "0.4.0", optional = true } [build-dependencies] protobuf-codegen = "3.1.0" From fee3e00a40d34c5f50661acc0616816c327802d9 Mon Sep 17 00:00:00 2001 From: James Sturtevant Date: Tue, 23 May 2023 16:51:57 -0700 Subject: [PATCH 2/2] Adopt new nix API's for SockaddrLike Adopt new nix API's for SockaddrLike Signed-off-by: James Sturtevant --- src/common.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/common.rs b/src/common.rs index a3783852..59a57732 100644 --- a/src/common.rs +++ b/src/common.rs @@ -100,11 +100,11 @@ fn make_addr(_domain: Domain, sockaddr: &str) -> Result { UnixAddr::new(sockaddr).map_err(err_to_others_err!(e, "")) } -fn make_socket(addr: (&str, u32)) -> Result<(RawFd, Domain, SockAddr)> { +fn make_socket(addr: (&str, u32)) -> Result<(RawFd, Domain, Box)> { let (sockaddr, _) = addr; let (domain, sockaddrv) = parse_sockaddr(sockaddr)?; - let get_sock_addr = |domain, sockaddr| -> Result<(RawFd, SockAddr)> { + let get_sock_addr = |domain, sockaddr| -> Result<(RawFd, Box)> { let fd = socket(AddressFamily::Unix, SockType::Stream, SOCK_CLOEXEC, None) .map_err(|e| Error::Socket(e.to_string()))?; @@ -112,12 +112,11 @@ fn make_socket(addr: (&str, u32)) -> Result<(RawFd, Domain, SockAddr)> { // so there is a chance of leak if fork + exec happens in between of these calls. #[cfg(target_os = "macos")] set_fd_close_exec(fd)?; - - let sockaddr = SockAddr::Unix(make_addr(domain, sockaddr)?); - Ok((fd, sockaddr)) + let sockaddr = make_addr(domain, sockaddr)?; + Ok((fd, Box::new(sockaddr))) }; - let (fd, sockaddr) = match domain { + let (fd, sockaddr): (i32, Box) = match domain { Domain::Unix => get_sock_addr(domain, sockaddrv)?, #[cfg(any(target_os = "linux", target_os = "android"))] Domain::Vsock => { @@ -138,8 +137,8 @@ fn make_socket(addr: (&str, u32)) -> Result<(RawFd, Domain, SockAddr)> { ) .map_err(|e| Error::Socket(e.to_string()))?; let cid = addr.1; - let sockaddr = SockAddr::new_vsock(cid, port); - (fd, sockaddr) + let sockaddr = VsockAddr::new(cid, port); + (fd, Box::new(sockaddr)) } }; @@ -160,7 +159,7 @@ 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)?; - bind(fd, &sockaddr).map_err(err_to_others_err!(e, ""))?; + bind(fd, sockaddr.as_ref()).map_err(err_to_others_err!(e, ""))?; Ok((fd, domain)) } @@ -169,7 +168,7 @@ pub(crate) fn do_bind(sockaddr: &str) -> Result<(RawFd, Domain)> { pub(crate) unsafe fn client_connect(sockaddr: &str) -> Result { let (fd, _, sockaddr) = make_socket((sockaddr, VMADDR_CID_HOST))?; - connect(fd, &sockaddr)?; + connect(fd, sockaddr.as_ref())?; Ok(fd) }