@@ -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