From 3456152f23a9507f10c868ff4bc1cca91a486b21 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Fri, 29 Mar 2013 15:39:26 +0100 Subject: [PATCH] GThreadedResolver: set an error if no records could be found It is possible that the upstream servers return something, but we then filter all results because they are of the wrong type. In that case the API and subsequent GTask calls expect a GError to be set. https://bugzilla.gnome.org/show_bug.cgi?id=696857 --- gio/gthreadedresolver.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/gio/gthreadedresolver.c b/gio/gthreadedresolver.c index def85b8..2332adf 100644 --- a/gio/gthreadedresolver.c +++ b/gio/gthreadedresolver.c @@ -472,6 +472,14 @@ g_resolver_records_from_res_query (const gchar *rrname, records = g_list_prepend (records, record); } + if (records == NULL) + { + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_NOT_FOUND, + _("No DNS record of the requested type for '%s'"), rrname); + + return NULL; + } + else return records; } @@ -616,7 +624,15 @@ g_resolver_records_from_DnsQuery (const gchar *rrname, records = g_list_prepend (records, g_variant_ref_sink (record)); } - return records; + if (records == NULL) + { + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_NOT_FOUND, + _("No DNS record of the requested type for '%s'"), rrname); + + return NULL; + } + else + return records; } #endif -- 2.7.4