diff --git a/src/main.rs b/src/main.rs index dab3022..6fe6c44 100644 --- a/src/main.rs +++ b/src/main.rs @@ -113,9 +113,11 @@ async fn handle_client_query( loop { response = vec![0u8; DNS_MAX_PACKET_SIZE]; let response_len = ext_socket.recv(&mut response[..]).await?; - ensure!(response_len > DNS_HEADER_SIZE, "Short packet"); response.truncate(response_len); - if dns::tid(&response) == tid && dns::qname(&packet)? == dns::qname(&response)? { + if response_len >= DNS_HEADER_SIZE + && dns::tid(&response) == tid + && dns::qname(&packet)? == dns::qname(&response)? + { break; } dbg!("Response collision");