rustix-uring icon indicating copy to clipboard operation
rustix-uring copied to clipboard

How to use Accept with an existing Address from rustix?

Open LAC-Tech opened this issue 7 months ago • 1 comments

opcode::Accept::new wants a mutable types::SocketAddrOpaque.

https://docs.rs/rustix-uring/latest/rustix_uring/opcode/struct.Accept.html

I'm unsure how to prevision one however.

In Rustix there's this trait:

https://docs.rs/rustix/latest/rustix/net/addr/trait.SocketAddrArg.html#tymethod.with_sockaddr

but it provides a constant pointer, not a mutable one.

LAC-Tech avatar Jun 01 '25 07:06 LAC-Tech

@LAC-Tech

You aren't really intended to use an existing one in that sense.

Even if you were to use ::with_sockaddr() and ::cast_mut() on the *const SocketAddrOpaque it won't update.

You can do it like this though:

let storage = MaybeUninit::<SocketAddrStorage>::uninit();
let mut addrlen = u32::try_from(size_of_val(&storage))?;
let mut sockaddr = unsafe { SocketAddrAny::new(storage, addrlen) };
let op = opcode::Accept::new(fd, sockaddr.as_mut_ptr().cast(), &mut addrlen);
// ... submit and process cqe
let sockaddr = SocketAddr::try_from(sockaddr)?;

silvanshade avatar Jun 28 '25 18:06 silvanshade