eculocate

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 5cb10f9383dc526421c14b0a962a25f761105ddd
parent d1acb4b7f2e87ff6cb03d038fbde5aeb583c6861
Author: Daniel Barlow <dan@telent.net>
Date:   Sun, 28 Dec 2025 17:56:07 +0000

deduplicate additional records

Diffstat:
Mecu-esp32/src/wifi.rs | 11+++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/ecu-esp32/src/wifi.rs b/ecu-esp32/src/wifi.rs @@ -5,6 +5,7 @@ use alloc::vec; use alloc::vec::Vec; use alloc::string::String; +use alloc::collections::BTreeSet; use crate::alloc::string::ToString; use embassy_executor::Spawner; @@ -258,18 +259,24 @@ async fn send_response(sock: &UdpSocket<'_>, flags.set_qr(MessageType::Reply); flags.set_authoritative(true); - let mut additional : Vec<ResourceRecord> = Vec::new(); + let mut additional : BTreeSet<ResourceRecord> = BTreeSet::new(); let mut answers : Vec<ResourceRecord> = { let mut rrs = Vec::new(); for a in answers { rrs.push(a.to_resource_record()); for r in db.all_additional(a).into_iter() { - additional.push(r.to_resource_record()); + additional.insert(r.to_resource_record()); }; } rrs }; + // don't send anything in "additional" that's already in the answers + for rr in &answers { + additional.remove(&rr); + } + + let mut additional : Vec<ResourceRecord> = additional.into_iter().collect(); let message = Message::new( id, flags,