Skip to content

Commit a86fbbc

Browse files
committed
truncate instead of resize
1 parent fbbe153 commit a86fbbc

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

src/udp.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,16 @@ impl ReceiveMsg {
4040
let recv = unsafe { libc::recvmsg(self.socket, &raw mut self.msghdr, 0) };
4141

4242
if recv < 0 {
43+
let errno = unsafe { *libc::__errno_location() };
4344
return Err(io::Error::other(format!(
44-
"libc::recvmsg {recv} != {}",
45+
"libc::recvmsg {recv} != {}, (errno == {errno})",
4546
self.udp_packet_size
4647
)));
4748
}
4849

4950
let recv = usize::try_from(recv)
5051
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, format!("recv: {e}")))?;
51-
buffer.resize(recv, 0u8);
52+
buffer.truncate(recv);
5253

5354
Ok(Datagrams::Single(buffer))
5455
}
@@ -101,17 +102,18 @@ impl ReceiveMmsg {
101102
};
102103

103104
if nb_msg == -1 {
104-
Err(io::Error::other("libc::recvmmsg"))
105+
let errno = unsafe { *libc::__errno_location() };
106+
Err(io::Error::other(format!("libc::recvmmsg, errno = {errno}")))
105107
} else {
106108
let nb_msg = usize::try_from(nb_msg)
107109
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, format!("nb_msg: {e}")))?;
108-
buffers.resize(nb_msg, vec![]);
110+
buffers.truncate(nb_msg);
109111

110112
for (i, buffer) in buffers.iter_mut().enumerate() {
111113
let msg_len = usize::try_from(self.mmsghdr[i].msg_len).map_err(|e| {
112114
io::Error::new(io::ErrorKind::InvalidData, format!("msg_len: {e}"))
113115
})?;
114-
buffer.resize(msg_len, 0u8);
116+
buffer.truncate(msg_len);
115117
}
116118

117119
Ok(Datagrams::Multiple(buffers))

0 commit comments

Comments
 (0)