[ldns-users] How to use _searchlist provided by ldns_struct_resolver?
Matthijs Mekking
matthijs at NLnetLabs.nl
Mon Sep 20 10:40:07 UTC 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Zbynek,
I noticed that the dname2str function prints a dot after every label.
And that function is used in ldns_resolver_search(...) to determine if
the domain is a relative or a fqdn. I fixed this in trunk, r3347.
I found another bug in the ldns_resolver_search function. The
ldns_resolver stops as soon it founds a packet. But it would be nice if
the ldns_resolver continues its search if the RCODE of that packet is
not NOERROR. This fix is in trunk since r3349.
Thanks for your report.
Best regards,
Matthijs
On 09/14/2010 06:46 PM, Zbynek Michl wrote:
> Hi Matthijs,
>
> I have tried to make a dname like this:
>
> domain = ldns_dname_new_frm_str("myhostname");
> new_domain = ldns_dname_new_frm_data(ldns_rdf_size(domain) - 1,
> ldns_rdf_data(domain));
> printf("domain: %s\n", ldns_rdf2str(domain));
> printf("new_domain: %s\n", ldns_rdf2str(new_domain));
>
> It is strange for me that both printf()s print the same result (with dot
> at the end). And then when I use:
>
> p = ldns_resolver_search(res, new_domain, LDNS_RR_TYPE_A,
> LDNS_RR_CLASS_IN, LDNS_RD);
>
> resolver returns FORMERR, because ldns_resolver_search() uses
> ldns_rdf2str() which causes to call ldns_resolver_query() with incorrect
> domain name.
>
>
> Another error of ldns_resolver_search() is that it does not check RCODE.
> In case of this resolv.conf:
>
> search mydomain.com
> search mydomain.cz
>
> and query for "myhostname" will try just first search value even if
> NXDOMAIN is returned.
>
> Last error that I have observed is that ldns_resolver_new_frm_file()
> reads just first domain name on line, so this searchlist definition is
> not read completely:
>
> search mydomain.com mydomain.cz
>
>
> Regards,
> Zbynek
>
> On 12.5.2010 09:04, Matthijs Mekking wrote:
> Hi Zbynek,
>
> Sorry for the late follow-up. You are right that making a dname from
> string always returns an absolute dname. You can try making a dname with
> ldns_dname_new_frm_data().
>
> Best regards,
>
> Matthijs
>
> Zbynek Michl wrote:
>>>> Hello,
>>>>
>>>> I am trying to use search list, but unsuccessfully. Here is an sample:
>>>>
>>>> --- CODE ---
>>>> ldns_rdf *domain = ldns_dname_new_frm_str("myhostname");
>>>> ldns_rdf *search = ldns_dname_new_frm_str("mydomain.cz");
>>>>
>>>> ldns_resolver_push_searchlist(res, search);
>>>>
>>>> p = ldns_resolver_search(res, domain, LDNS_RR_TYPE_A,
>>>> LDNS_RR_CLASS_IN, LDNS_RD);
>>>> --- /CODE ---
>>>>
>>>> The problem is that "myhostname.mydomain.cz" will never be tried,
>>>> because of ldns_dname_new_frm_str() adds "." to the end of "myhostname"
>>>> and therefore ldns_resolver_search() will not concatenate "mydomain.cz".
>>>> So how can I create "myhostname" RDF without trailing "."? Or any other
>>>> suggestion?
>>>>
>>>> Cheers,
>>>> Zbynek
>>>> _______________________________________________
>>>> ldns-users mailing list
>>>> ldns-users at open.nlnetlabs.nl
>>>> http://open.nlnetlabs.nl/mailman/listinfo/ldns-users
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJMlzoGAAoJEA8yVCPsQCW54RAIANqfP6o7Jex8E2gFfXoXQNl1
lIDjPGSWfuFPeAcQS4G7YA7Tav2/0SKLX1RXdIuclWkzW+dI74z5FwPIhrqGV9ef
+lWLO/jL2OvP6CDVTy/cc3abbU04rGl/PmYgCFJblJ4m98DjIrEF7OvfzviwH3G3
cePtHcCiZy/cmSU450IzZ35PezSGFvaTLif04aFSMwIsMvhsfixNn+H7R0lmklZM
6K42z/zuYKnuEAU5tadHStfAi4Et04SBEs4B1xRkWp+Sdy/dRhYaj103bypC6qMH
UiREaRCvbRkAnD5ukrodYvhjEmDrAnDPFo9MnSBCKZtDl+2nrWa9CUS2fVvqYxs=
=nOFm
-----END PGP SIGNATURE-----
More information about the ldns-users
mailing list