From 7187190cec49bba9b7b629c378ef90b702f2b1e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Mon, 18 Oct 2021 02:38:03 +0200 Subject: [PATCH] aquatic_udp: don't panic on Response::write error --- aquatic_udp/src/lib/network.rs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/aquatic_udp/src/lib/network.rs b/aquatic_udp/src/lib/network.rs index 82b187f..8901da5 100644 --- a/aquatic_udp/src/lib/network.rs +++ b/aquatic_udp/src/lib/network.rs @@ -292,21 +292,26 @@ fn send_responses( let ip_version = ip_version_from_ip(src.ip()); - response.write(&mut cursor, ip_version).unwrap(); + match response.write(&mut cursor, ip_version) { + Ok(()) => { + let amt = cursor.position() as usize; - let amt = cursor.position() as usize; + match socket.send_to(&cursor.get_ref()[..amt], src) { + Ok(amt) => { + responses_sent += 1; + bytes_sent += amt; + } + Err(err) => { + if err.kind() == ErrorKind::WouldBlock { + break; + } - match socket.send_to(&cursor.get_ref()[..amt], src) { - Ok(amt) => { - responses_sent += 1; - bytes_sent += amt; - } - Err(err) => { - if err.kind() == ErrorKind::WouldBlock { - break; + ::log::info!("send_to error: {}", err); + } } - - ::log::info!("send_to error: {}", err); + }, + Err(err) => { + ::log::error!("Response::write error: {:?}", err); } } }