mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 18:55:32 +00:00
udp: improve code in send_response
This commit is contained in:
parent
8f37459298
commit
9d3420ba1c
1 changed files with 52 additions and 53 deletions
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue