From b9d394ea565fd742bcdd34e8dd61ae07c58a9565 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 16 Jul 2014 03:28:18 +0200 Subject: [PATCH] resolve: add distinct bus error code for hosts that exist but lack A or AAAA records --- src/resolve/resolved-bus.c | 12 ++++++++---- src/resolve/resolved-dns-query.c | 9 +++------ src/shared/bus-errors.h | 1 + 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index 4a011ef..50eb012 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -138,8 +138,10 @@ static void bus_method_resolve_hostname_complete(DnsQuery *q) { added ++; } - if (added <= 0) - goto parse_fail; + if (added <= 0) { + r = sd_bus_reply_method_errorf(q->request, BUS_ERROR_NO_SUCH_RR, "Hostname %s does not have RR of this type", q->request_hostname); + break; + } r = sd_bus_message_close_container(reply); if (r < 0) @@ -315,8 +317,10 @@ static void bus_method_resolve_address_complete(DnsQuery *q) { added ++; } - if (added <= 0) - goto parse_fail; + if (added <= 0) { + r = sd_bus_reply_method_errorf(q->request, BUS_ERROR_NO_SUCH_RR, "Address %s does not have RR of this type", ip); + break; + } r = sd_bus_message_close_container(reply); if (r < 0) diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c index a988052..dd81215 100644 --- a/src/resolve/resolved-dns-query.c +++ b/src/resolve/resolved-dns-query.c @@ -107,12 +107,9 @@ int dns_query_transaction_reply(DnsQueryTransaction *t, DnsPacket *p) { t->packet = dns_packet_ref(p); - if (DNS_PACKET_RCODE(p) == DNS_RCODE_SUCCESS) { - if( be16toh(DNS_PACKET_HEADER(p)->ancount) > 0) - dns_query_transaction_set_state(t, DNS_QUERY_SUCCESS); - else - dns_query_transaction_set_state(t, DNS_QUERY_INVALID_REPLY); - } else + if (DNS_PACKET_RCODE(p) == DNS_RCODE_SUCCESS) + dns_query_transaction_set_state(t, DNS_QUERY_SUCCESS); + else dns_query_transaction_set_state(t, DNS_QUERY_FAILURE); return 0; diff --git a/src/shared/bus-errors.h b/src/shared/bus-errors.h index 388b42b..08a7acc 100644 --- a/src/shared/bus-errors.h +++ b/src/shared/bus-errors.h @@ -62,4 +62,5 @@ #define BUS_ERROR_NO_NAME_SERVERS "org.freedesktop.resolve1.NoNameServers" #define BUS_ERROR_INVALID_REPLY "org.freedesktop.resolve1.InvalidReply" +#define BUS_ERROR_NO_SUCH_RR "org.freedesktop.resolve1.NoSuchRR" #define _BUS_ERROR_DNS "org.freedesktop.resolve1.DnsError." -- 2.7.4