udp: improve code in send_response

This commit is contained in:
Joakim Frostegård 2022-07-04 08:45:13 +02:00
parent 8f37459298
commit 9d3420ba1c

View file

@ -76,11 +76,13 @@ fn send_response(
) { ) {
let mut cursor = Cursor::new(buffer); let mut cursor = Cursor::new(buffer);
match response.write(&mut cursor) { if let Err(err) = response.write(&mut cursor) {
Ok(()) => { ::log::error!("Converting response to bytes failed: {:#}", err);
let amt = cursor.position() as usize;
let canonical_addr_is_ipv4 = canonical_addr.is_ipv4(); return;
}
let bytes_written = cursor.position() as usize;
let addr = if config.network.address.is_ipv4() { let addr = if config.network.address.is_ipv4() {
canonical_addr canonical_addr
@ -90,9 +92,9 @@ fn send_response(
canonical_addr.get_ipv6_mapped() canonical_addr.get_ipv6_mapped()
}; };
match socket.send_to(&cursor.get_ref()[..amt], addr) { match socket.send_to(&cursor.get_ref()[..bytes_written], addr) {
Ok(amt) if config.statistics.active() => { Ok(amt) if config.statistics.active() => {
let stats = if canonical_addr_is_ipv4 { let stats = if canonical_addr.is_ipv4() {
&state.statistics_ipv4 &state.statistics_ipv4
} else { } else {
&state.statistics_ipv6 &state.statistics_ipv6
@ -118,7 +120,8 @@ fn send_response(
} }
} }
Ok(_) => (), Ok(_) => (),
Err(err) => match resend_buffer { Err(err) => {
match resend_buffer {
Some(resend_buffer) Some(resend_buffer)
if (err.raw_os_error() == Some(ENOBUFS)) if (err.raw_os_error() == Some(ENOBUFS))
|| (err.kind() == ErrorKind::WouldBlock) => || (err.kind() == ErrorKind::WouldBlock) =>
@ -134,11 +137,7 @@ fn send_response(
_ => { _ => {
::log::warn!("Sending response to {} failed: {:#}", addr, err); ::log::warn!("Sending response to {} failed: {:#}", addr, err);
} }
},
} }
} }
Err(err) => {
::log::error!("Converting response to bytes failed: {:#}", err);
}
} }
} }