MCPcopy Create free account
hub / github.com/bytecodealliance/rustix / do_test_unix_msg_unconnected

Function do_test_unix_msg_unconnected

tests/net/unix_alloc.rs:262–364  ·  view source on GitHub ↗
(addr: SocketAddrUnix)

Source from the content-addressed store, hash-verified

260/// `sendmsg_addr` instead of `sendmsg`.
261#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))]
262fn do_test_unix_msg_unconnected(addr: SocketAddrUnix) {
263 use rustix::io::{IoSlice, IoSliceMut};
264 use rustix::net::{recvmsg, sendmsg_addr, RecvFlags, ReturnFlags, SendFlags};
265
266 let server = {
267 let runs: &[i32] = &[3, 184, 187, 0];
268 let data_socket = socket(AddressFamily::UNIX, SocketType::DGRAM, None).unwrap();
269 bind(&data_socket, &addr).unwrap();
270
271 move || {
272 let mut buffer = vec![0; BUFFER_SIZE];
273 for expected_sum in runs {
274 let mut sum = 0;
275 loop {
276 let result = recvmsg(
277 &data_socket,
278 &mut [IoSliceMut::new(&mut buffer)],
279 &mut Default::default(),
280 RecvFlags::empty(),
281 )
282 .unwrap();
283 let nread = result.bytes;
284
285 assert_eq!(result.flags, ReturnFlags::empty());
286
287 assert_ne!(&buffer[..nread], b"exit");
288 if &buffer[..nread] == b"sum" {
289 break;
290 }
291
292 sum += i32::from_str(&String::from_utf8_lossy(&buffer[..nread])).unwrap();
293 }
294
295 assert_eq!(sum, *expected_sum);
296 }
297 let result = recvmsg(
298 &data_socket,
299 &mut [IoSliceMut::new(&mut buffer)],
300 &mut Default::default(),
301 RecvFlags::empty(),
302 )
303 .unwrap();
304 let nread = result.bytes;
305
306 assert_eq!(&buffer[..nread], b"exit");
307 assert_eq!(result.flags, ReturnFlags::empty());
308 }
309 };
310
311 let client = move || {
312 let runs: &[&[&str]] = &[&["1", "2"], &["4", "77", "103"], &["5", "78", "104"], &[]];
313
314 for args in runs {
315 let data_socket = socket(AddressFamily::UNIX, SocketType::DGRAM, None).unwrap();
316
317 for arg in *args {
318 sendmsg_addr(
319 &data_socket,

Callers 2

Calls 7

serverFunction · 0.70
clientFunction · 0.70
socketFunction · 0.50
bindFunction · 0.50
recvmsgFunction · 0.50
sendmsg_addrFunction · 0.50
as_bytesMethod · 0.45

Tested by 2