847
852
if (addr_enum->addresses == NULL)
849
if (!addr_enum->addr->priv->sockaddrs)
850
g_network_address_parse_sockaddr (addr_enum->addr);
851
if (!addr_enum->addr->priv->sockaddrs)
853
GResolver *resolver = g_resolver_get_default ();
854
GNetworkAddress *addr = addr_enum->addr;
855
GResolver *resolver = g_resolver_get_default ();
856
gint64 serial = g_resolver_get_serial (resolver);
858
if (addr->priv->resolver_serial != 0 &&
859
addr->priv->resolver_serial != serial)
861
/* Resolver has reloaded, discard cached addresses */
862
g_list_free_full (addr->priv->sockaddrs, g_object_unref);
863
addr->priv->sockaddrs = NULL;
866
if (!addr->priv->sockaddrs)
867
g_network_address_parse_sockaddr (addr);
868
if (!addr->priv->sockaddrs)
854
870
GList *addresses;
856
872
addresses = g_resolver_lookup_by_name (resolver,
857
addr_enum->addr->priv->hostname,
873
addr->priv->hostname,
858
874
cancellable, error);
859
g_object_unref (resolver);
877
g_object_unref (resolver);
864
g_network_address_set_addresses (addr_enum->addr, addresses);
881
g_network_address_set_addresses (addr, addresses, serial);
867
addr_enum->addresses = addr_enum->addr->priv->sockaddrs;
884
addr_enum->addresses = addr->priv->sockaddrs;
868
885
addr_enum->next = addr_enum->addresses;
886
g_object_unref (resolver);
871
889
if (addr_enum->next == NULL)
916
934
addresses = g_resolver_lookup_by_name_finish (resolver, result, &error);
919
g_network_address_set_addresses (addr_enum->addr, addresses);
938
g_network_address_set_addresses (addr_enum->addr, addresses,
939
g_resolver_get_serial (resolver));
921
942
have_addresses (addr_enum, task, error);
937
958
if (addr_enum->addresses == NULL)
939
if (!addr_enum->addr->priv->sockaddrs)
941
if (g_network_address_parse_sockaddr (addr_enum->addr))
960
GNetworkAddress *addr = addr_enum->addr;
961
GResolver *resolver = g_resolver_get_default ();
962
gint64 serial = g_resolver_get_serial (resolver);
964
if (addr->priv->resolver_serial != 0 &&
965
addr->priv->resolver_serial != serial)
967
/* Resolver has reloaded, discard cached addresses */
968
g_list_free_full (addr->priv->sockaddrs, g_object_unref);
969
addr->priv->sockaddrs = NULL;
972
if (!addr->priv->sockaddrs)
974
if (g_network_address_parse_sockaddr (addr))
942
975
have_addresses (addr_enum, task, NULL);
945
GResolver *resolver = g_resolver_get_default ();
947
978
g_resolver_lookup_by_name_async (resolver,
948
addr_enum->addr->priv->hostname,
979
addr->priv->hostname,
950
981
got_addresses, task);
951
g_object_unref (resolver);
983
g_object_unref (resolver);
956
addr_enum->addresses = addr_enum->addr->priv->sockaddrs;
987
addr_enum->addresses = addr->priv->sockaddrs;
957
988
addr_enum->next = addr_enum->addresses;
989
g_object_unref (resolver);
960
992
if (addr_enum->next)