* removes total-size from return value of recv_mmsg (cherry picked from commit4b24499916
) * patches bug in recv_mmsg when npkts != nrecv If recv_mmsg receives 2 packets where the first one is filtered out, then it returns npkts == 1: https://github.com/solana-labs/solana/blob/01a096adc/streamer/src/recvmmsg.rs#L104-L115 But then streamer::packet::recv_from will erroneously keep the 1st packet and drop the 2nd one: https://github.com/solana-labs/solana/blob/01a096adc/streamer/src/packet.rs#L34-L49 To avoid this bug, this commit updates recv_mmsg to always return total number of received packets. If socket address cannot be correctly obtained, it is left as the default value which is UNSPECIFIED: https://github.com/solana-labs/solana/blob/01a096adc/sdk/src/packet.rs#L145 (cherry picked from commit379feecae5
) Co-authored-by: behzad nouri <behzadnouri@gmail.com>
This commit is contained in:
@ -2932,8 +2932,7 @@ mod tests {
|
||||
.unwrap();
|
||||
|
||||
let mut packets = vec![Packet::default(); 2];
|
||||
let (_, num_received) =
|
||||
recv_mmsg(recv_socket, &mut packets[..]).unwrap_or_default();
|
||||
let num_received = recv_mmsg(recv_socket, &mut packets[..]).unwrap_or_default();
|
||||
assert_eq!(num_received, expected_num_forwarded, "{}", name);
|
||||
}
|
||||
|
||||
@ -3032,8 +3031,7 @@ mod tests {
|
||||
.unwrap();
|
||||
|
||||
let mut packets = vec![Packet::default(); 2];
|
||||
let (_, num_received) =
|
||||
recv_mmsg(recv_socket, &mut packets[..]).unwrap_or_default();
|
||||
let num_received = recv_mmsg(recv_socket, &mut packets[..]).unwrap_or_default();
|
||||
assert_eq!(num_received, expected_ids.len(), "{}", name);
|
||||
for (i, expected_id) in expected_ids.iter().enumerate() {
|
||||
assert_eq!(packets[i].meta.size, 1);
|
||||
|
Reference in New Issue
Block a user