Skip to content

Commit

Permalink
Merge pull request #189 from jsturtevant/bump-deps
Browse files Browse the repository at this point in the history
Update dependencies for the main ttrpc project
  • Loading branch information
lifupan authored May 27, 2023
2 parents 6d8517a + fee3e00 commit edc11a7
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 13 deletions.
6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Expand Down
19 changes: 9 additions & 10 deletions src/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,24 +100,23 @@ fn make_addr(_domain: Domain, sockaddr: &str) -> Result<UnixAddr> {
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<dyn SockaddrLike>)> {
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<dyn SockaddrLike>)> {
let fd = socket(AddressFamily::Unix, SockType::Stream, SOCK_CLOEXEC, None)
.map_err(|e| Error::Socket(e.to_string()))?;

// MacOS doesn't support atomic creation of a socket descriptor with SOCK_CLOEXEC flag,
// 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<dyn SockaddrLike>) = match domain {
Domain::Unix => get_sock_addr(domain, sockaddrv)?,
#[cfg(any(target_os = "linux", target_os = "android"))]
Domain::Vsock => {
Expand All @@ -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))
}
};

Expand All @@ -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))
}
Expand All @@ -169,7 +168,7 @@ pub(crate) fn do_bind(sockaddr: &str) -> Result<(RawFd, Domain)> {
pub(crate) unsafe fn client_connect(sockaddr: &str) -> Result<RawFd> {
let (fd, _, sockaddr) = make_socket((sockaddr, VMADDR_CID_HOST))?;

connect(fd, &sockaddr)?;
connect(fd, sockaddr.as_ref())?;

Ok(fd)
}
Expand Down

0 comments on commit edc11a7

Please sign in to comment.