commit d1acb4b7f2e87ff6cb03d038fbde5aeb583c6861
parent 0275110a7c0110f7e20cf00aa5b2b5d87f310a9f
Author: Daniel Barlow <dan@telent.net>
Date: Sun, 28 Dec 2025 16:07:17 +0000
include transitive deps in additional records
Diffstat:
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/ecu-esp32/src/wifi.rs b/ecu-esp32/src/wifi.rs
@@ -218,8 +218,20 @@ impl DnsDatabase {
_ => Vec::from([])
}
}
-}
+ fn all_additional_<'a>(&'a self, r: &DnsResource, collect: &mut Vec<&'a DnsResource>) {
+ for r in self.additional(r) {
+ collect.push(r);
+ self.all_additional_(r, collect);
+ }
+ }
+
+ fn all_additional(&self, r: &DnsResource) -> Vec<&DnsResource> {
+ let mut collect : Vec<&DnsResource> = Vec::new();
+ self.all_additional_(r, &mut collect);
+ collect
+ }
+}
// RFC: "Multicast DNS responses MUST NOT contain any questions in the
// Question Section. ". However, responses to "legacy" queries (port != 5353)
@@ -251,7 +263,7 @@ async fn send_response(sock: &UdpSocket<'_>,
let mut rrs = Vec::new();
for a in answers {
rrs.push(a.to_resource_record());
- for r in db.additional(a).into_iter() {
+ for r in db.all_additional(a).into_iter() {
additional.push(r.to_resource_record());
};
}