client: bind socket to abstract name before connect

it seems that the server can't sendto() an unbound peer
This commit is contained in:
2026-04-30 20:40:02 +01:00
parent 8dbe90e0ad
commit 40ae833af3
+7 -2
View File
@@ -4,11 +4,12 @@ use std::{
os::unix::net::{
UnixDatagram,
SocketAncillary,
AncillaryData
SocketAddr
},
env,
io::IoSlice
};
use std::os::linux::net::SocketAddrExt;
fn main() {
let mut payload = "".to_string();
@@ -22,7 +23,11 @@ fn main() {
let Ok(sock_path) = env::var("LUAD_SOCKET_PATH") else {
panic!("need to set LUAD_SOCKET_PATH env var");
};
let sock = UnixDatagram::unbound().expect("socket");
let pid = std::process::id();
let addr = SocketAddr::from_abstract_name(pid.to_le_bytes()).expect("addr");
let sock = UnixDatagram::bind_addr(&addr).expect("bind");
sock.connect(sock_path).expect("connect");
let fds = [0, 1, 2];
let mut ancillary_buffer = [0; 128];