diff --git a/lib/resolve.c b/lib/resolve.c index 014f1ceadd17c30392cde2796c4e78ab6512062e..6902cbeb91e2c0eeac86b2e3cad2181fd9bd11d6 100644 --- a/lib/resolve.c +++ b/lib/resolve.c @@ -1288,9 +1288,14 @@ int kr_resolve_produce(struct kr_request *request, struct sockaddr **dst, int *t struct kr_query *qry = array_tail(rplan->pending); if (qry->deferred != NULL) { /* @todo: Refactoring validator, check trust chain before resuming. */ - int state = (qry->flags & QUERY_FORWARD) ? - forward_trust_chain_check(request, qry, true) : - trust_chain_check(request, qry); + int state = 0; + if (((qry->flags & QUERY_FORWARD) == 0) || + ((qry->stype == KNOT_RRTYPE_DS) && (qry->flags & QUERY_CNAME))) { + state = trust_chain_check(request, qry); + } else { + state = forward_trust_chain_check(request, qry, true); + } + switch(state) { case KR_STATE_FAIL: return KR_STATE_FAIL; case KR_STATE_DONE: return KR_STATE_PRODUCE; diff --git a/lib/utils.c b/lib/utils.c index 854ec396af68dbd4946c903c5637472cde7e9e08..71f1c848849ab34b7d24719f95c1459c453b7ec0 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -759,13 +759,22 @@ void kr_dname_print(const knot_dname_t *name, const char *prefix, const char *po { char str[KNOT_DNAME_MAXLEN] = {0}; knot_dname_to_str(str, name, KNOT_DNAME_MAXLEN); - kr_log_verbose ("%s%s%s", prefix, str, postfix); + kr_log_verbose("%s%s%s", prefix, str, postfix); } void kr_rrtype_print(const uint16_t rrtype, const char *prefix, const char *postfix) { char str[32] = {0}; knot_rrtype_to_string(rrtype, str, 32); - kr_log_verbose ("%s%s%s", prefix, str, postfix); + kr_log_verbose("%s%s%s", prefix, str, postfix); +} + +void kr_qry_print(const struct kr_query *qry, const char *prefix, const char *postfix) +{ + char str[6] = {0}; + knot_rrclass_to_string(qry->sclass, str, sizeof(str)); + kr_dname_print(qry->sname, prefix, " "); + kr_log_verbose("%s",str); + kr_rrtype_print(qry->stype, " ", postfix); } diff --git a/lib/utils.h b/lib/utils.h index 156e8982b9efe703400285f4fc2a01a6e219949d..25ab00e27ffb43c6e383639aa83d97fc938fa4f6 100644 --- a/lib/utils.h +++ b/lib/utils.h @@ -30,6 +30,8 @@ #include "lib/generic/array.h" #include "lib/defines.h" +struct kr_query; + /* * Logging and debugging. */ @@ -255,6 +257,7 @@ int kr_ranked_rrarray_set_wire(ranked_rr_array_t *array, bool to_wire, uint32_t qry_uid, bool check_dups); void kr_rrset_print(const knot_rrset_t *rr, const char *prefix); +void kr_qry_print(const struct kr_query *qry, const char *prefix, const char *postfix); void kr_pkt_print(knot_pkt_t *pkt); void kr_dname_print(const knot_dname_t *name, const char *prefix, const char *postfix); void kr_rrtype_print(const uint16_t rrtype, const char *prefix, const char *postfix);