+
+ let mut dname_search = self.verified_rrs.iter()
+ .filter(|rr| name.ends_with(&**rr.name()))
+ .filter_map(|rr| if let RR::DName(dn) = rr { Some(dn) } else { None });
+ if let Some(dname) = dname_search.next() {
+ let prefix = name.strip_suffix(&*dname.name).expect("We just filtered for this");
+ let resolved_name = prefix.to_owned() + &dname.delegation_name;
+ dname_name = if let Ok(name) = resolved_name.try_into() {
+ name
+ } else {
+ // This should only happen if the combined name ended up being too long
+ return Vec::new();
+ };
+ name = &dname_name;
+ continue;
+ }
+