resolved: add dns_answer_is_empty() and dns_question_is_empty() helpers

And make use of them at a few places.
This commit is contained in:
Lennart Poettering 2016-06-20 21:28:53 +02:00
parent 17c8de633f
commit 501e8eb054
3 changed files with 12 additions and 4 deletions

View file

@ -87,6 +87,10 @@ static inline unsigned dns_answer_size(DnsAnswer *a) {
return a ? a->n_rrs : 0;
}
static inline bool dns_answer_isempty(DnsAnswer *a) {
return dns_answer_size(a) <= 0;
}
void dns_answer_dump(DnsAnswer *answer, FILE *f);
DEFINE_TRIVIAL_CLEANUP_FUNC(DnsAnswer*, dns_answer_unref);

View file

@ -56,6 +56,10 @@ static inline unsigned dns_question_size(DnsQuestion *q) {
return q ? q->n_keys : 0;
}
static inline bool dns_question_isempty(DnsQuestion *q) {
return dns_question_size(q) <= 0;
}
DEFINE_TRIVIAL_CLEANUP_FUNC(DnsQuestion*, dns_question_unref);
#define _DNS_QUESTION_FOREACH(u, key, q) \

View file

@ -610,9 +610,9 @@ static int dns_scope_make_reply_packet(
assert(s);
assert(ret);
if ((!q || q->n_keys <= 0)
&& (!answer || answer->n_rrs <= 0)
&& (!soa || soa->n_rrs <= 0))
if (dns_question_isempty(q) &&
dns_answer_isempty(answer) &&
dns_answer_isempty(soa))
return -EINVAL;
r = dns_packet_new(&p, s->protocol, 0);
@ -718,7 +718,7 @@ void dns_scope_process_query(DnsScope *s, DnsStream *stream, DnsPacket *p) {
return;
}
assert(p->question->n_keys == 1);
assert(dns_question_size(p->question) == 1);
key = p->question->keys[0];
r = dns_zone_lookup(&s->zone, key, 0, &answer, &soa, &tentative);