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);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue