X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgthreadedresolver.c;h=9bb864c7fa0f8db04154bb9556995477febf349e;hb=e608ec7b2e47d29fa189fca6e97f484f41c115a4;hp=23caddd3a5c80ac5576a363de41f6215b4358d0f;hpb=09d83640a8e79bff71cddf90d39b40ef411d30c9;p=platform%2Fupstream%2Fglib.git diff --git a/gio/gthreadedresolver.c b/gio/gthreadedresolver.c index 23caddd..9bb864c 100644 --- a/gio/gthreadedresolver.c +++ b/gio/gthreadedresolver.c @@ -15,9 +15,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. + * Public License along with this library; if not, see . */ #include "config.h" @@ -98,9 +96,22 @@ do_lookup_by_name (GTask *task, g_object_unref (sockaddr); } - addresses = g_list_reverse (addresses); - g_task_return_pointer (task, addresses, - (GDestroyNotify)g_resolver_free_addresses); + if (addresses != NULL) + { + addresses = g_list_reverse (addresses); + g_task_return_pointer (task, addresses, + (GDestroyNotify)g_resolver_free_addresses); + } + else + { + /* All addresses failed to be converted to GSocketAddresses. */ + g_task_return_new_error (task, + G_RESOLVER_ERROR, + G_RESOLVER_ERROR_NOT_FOUND, + _("Error resolving '%s': %s"), + hostname, + _("No valid addresses were found")); + } } else { @@ -524,29 +535,22 @@ g_resolver_records_from_res_query (const gchar *rrname, if (len <= 0) { - GResolverError errnum; - const gchar *format; - if (len == 0 || herr == HOST_NOT_FOUND || herr == NO_DATA) { - errnum = G_RESOLVER_ERROR_NOT_FOUND; - format = _("No DNS record of the requested type for '%s'"); + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_NOT_FOUND, + _("No DNS record of the requested type for '%s'"), rrname); } else if (herr == TRY_AGAIN) { - errnum = G_RESOLVER_ERROR_TEMPORARY_FAILURE; - format = _("Temporarily unable to resolve '%s'"); + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_TEMPORARY_FAILURE, + _("Temporarily unable to resolve '%s'"), rrname); } else { - errnum = G_RESOLVER_ERROR_INTERNAL; - format = _("Error resolving '%s'"); + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL, + _("Error resolving '%s'"), rrname); } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wformat-nonliteral" - g_set_error (error, G_RESOLVER_ERROR, errnum, format, rrname); -#pragma GCC diagnostic pop return NULL; } @@ -709,26 +713,22 @@ g_resolver_records_from_DnsQuery (const gchar *rrname, if (status != ERROR_SUCCESS) { - GResolverError errnum; - const gchar *format; - if (status == DNS_ERROR_RCODE_NAME_ERROR) { - errnum = G_RESOLVER_ERROR_NOT_FOUND; - format = _("No DNS record of the requested type for '%s'"); + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_NOT_FOUND, + _("No DNS record of the requested type for '%s'"), rrname); } else if (status == DNS_ERROR_RCODE_SERVER_FAILURE) { - errnum = G_RESOLVER_ERROR_TEMPORARY_FAILURE; - format = _("Temporarily unable to resolve '%s'"); + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_TEMPORARY_FAILURE, + _("Temporarily unable to resolve '%s'"), rrname); } else { - errnum = G_RESOLVER_ERROR_INTERNAL; - format = _("Error resolving '%s'"); + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL, + _("Error resolving '%s'"), rrname); } - g_set_error (error, G_RESOLVER_ERROR, errnum, format, rrname); return NULL; } @@ -933,7 +933,7 @@ g_threaded_resolver_class_init (GThreadedResolverClass *threaded_class) resolver_class->lookup_records_async = lookup_records_async; resolver_class->lookup_records_finish = lookup_records_finish; - /* Initialize _g_resolver_addrinfo_hints */ + /* Initialize addrinfo_hints */ #ifdef AI_ADDRCONFIG addrinfo_hints.ai_flags |= AI_ADDRCONFIG; #endif