luad

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 40ae833af3411497de25e68cab0222a3256ec0be
parent 8dbe90e0ad291d83c56e6a1a7081701dfcba22f8
Author: Daniel Barlow <dan@telent.net>
Date:   Thu, 30 Apr 2026 20:40:02 +0100

client: bind socket to abstract name before connect

it seems that the server can't sendto() an unbound peer

Diffstat:
Msrc/bin/luac.rs | 9+++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/bin/luac.rs b/src/bin/luac.rs @@ -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];