Skip to content

Commit e458f75

Browse files
authored
Try #1837:
2 parents 76f04df + 44b74fc commit e458f75

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

test/sys/test_socket.rs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,9 @@ mod recvfrom {
565565
None,
566566
)
567567
.expect("send socket failed");
568+
setsockopt(rsock, sockopt::ReceiveTimestampns, &true).unwrap();
569+
let mut cmsgspace1 = nix::cmsg_space!(nix::sys::time::TimeSpec);
570+
let mut cmsgspace2 = nix::cmsg_space!(nix::sys::time::TimeSpec);
568571

569572
let send_thread = thread::spawn(move || {
570573
for _ in 0..NUM_MESSAGES_SENT {
@@ -582,19 +585,31 @@ mod recvfrom {
582585
.map(|buf| [IoSliceMut::new(&mut buf[..])])
583586
.collect();
584587

585-
for iov in &iovs {
586-
msgs.push_back(RecvMmsgData {
587-
iov,
588-
cmsg_buffer: None,
589-
})
590-
}
588+
msgs.push_back(RecvMmsgData {
589+
iov: &iovs[0],
590+
cmsg_buffer: Some(&mut cmsgspace1),
591+
});
592+
msgs.push_back(RecvMmsgData {
593+
iov: &iovs[1],
594+
cmsg_buffer: Some(&mut cmsgspace2),
595+
});
591596

592597
let res: Vec<RecvMsg<SockaddrIn>> =
593598
recvmmsg(rsock, &mut msgs, MsgFlags::empty(), None)
594599
.expect("recvmmsg");
595600
assert_eq!(res.len(), DATA.len());
596601

597-
for RecvMsg { address, bytes, .. } in res.into_iter() {
602+
// one
603+
for r in res.into_iter() {
604+
let rtime = match r.cmsgs().next() {
605+
Some(ControlMessageOwned::ScmTimestampns(rtime)) => rtime,
606+
Some(_) => panic!("Unexpected control message"),
607+
None => panic!("No control message"),
608+
};
609+
assert!(rtime.tv_sec() > 10000);
610+
611+
let RecvMsg { address, bytes, .. } = r;
612+
598613
assert_eq!(AddressFamily::Inet, address.unwrap().family().unwrap());
599614
assert_eq!(DATA.len(), bytes);
600615
}

0 commit comments

Comments
 (0)