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);
match response.write(&mut cursor) {
Ok(()) => {
let amt = cursor.position() as usize;
if let Err(err) = response.write(&mut cursor) {
::log::error!("Converting response to bytes failed: {:#}", err);
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() {
canonical_addr
@ -90,9 +92,9 @@ fn send_response(
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() => {
let stats = if canonical_addr_is_ipv4 {
let stats = if canonical_addr.is_ipv4() {
&state.statistics_ipv4
} else {
&state.statistics_ipv6
@ -118,7 +120,8 @@ fn send_response(
}
}
Ok(_) => (),
Err(err) => match resend_buffer {
Err(err) => {
match resend_buffer {
Some(resend_buffer)
if (err.raw_os_error() == Some(ENOBUFS))
|| (err.kind() == ErrorKind::WouldBlock) =>
@ -134,11 +137,7 @@ fn send_response(
_ => {
::log::warn!("Sending response to {} failed: {:#}", addr, err);
}
},
}
}
Err(err) => {
::log::error!("Converting response to bytes failed: {:#}", err);
}
}
}