+got_addresses (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GTask *task = user_data;
+ GNetworkAddressAddressEnumerator *addr_enum = g_task_get_source_object (task);
+ GResolver *resolver = G_RESOLVER (source_object);
+ GList *addresses;
+ GError *error = NULL;
+
+ if (!addr_enum->addr->priv->sockaddrs)
+ {
+ addresses = g_resolver_lookup_by_name_finish (resolver, result, &error);
+
+ if (!error)
+ {
+ g_network_address_set_addresses (addr_enum->addr, addresses,
+ g_resolver_get_serial (resolver));
+ }
+ }
+ have_addresses (addr_enum, task, error);
+}
+
+static void