--- a/libpurple/network.c Fri Dec 18 22:44:26 2015 -0600
+++ b/libpurple/network.c Sun Dec 20 13:54:34 2015 -0600
@@ -977,38 +977,27 @@
-purple_network_ip_lookup(const gchar *hostname) {
+purple_network_ip_lookup_cb(GObject *sender, GAsyncResult *result, gpointer data) { - GList *addresses =NULL, *l = NULL;
+ GList *addresses = NULL; GInetAddress *address = NULL;
+ const gchar **ip_address = (const gchar **)data; - addresses = g_resolver_lookup_by_name(g_resolver_get_default(), hostname, NULL, &error);
- if(addresses == NULL) {
+ addresses = g_resolver_lookup_by_name_finish(g_resolver_get_default(), result, &error); purple_debug_info("network", "lookup of IP address failed: %s\n", error->message);
- for(l = addresses; l; l = l->next) {
- address = G_INET_ADDRESS(l->data);
+ address = G_INET_ADDRESS(addresses->data); - if(!g_inet_address_get_is_loopback(address) && !g_inet_address_get_is_link_local(address)) {
- g_object_ref(G_OBJECT(address));
+ *ip_address = g_inet_address_to_string(address); g_resolver_free_addresses(addresses);
@@ -1016,17 +1005,11 @@
if (stun_server && stun_server[0] != '\0') {
if (purple_network_is_available()) {
- GInetAddress *address = NULL;
- purple_debug_info("network", "running DNS query for STUN server\n");
- address = purple_network_ip_lookup(stun_server);
- stun_ip = g_inet_address_to_string(address);
- g_object_unref(G_OBJECT(address));
+ g_resolver_lookup_by_name_async(g_resolver_get_default(), + purple_network_ip_lookup_cb, purple_debug_info("network",
"network is unavailable, don't try to update STUN IP");
@@ -1042,17 +1025,11 @@
if (turn_server && turn_server[0] != '\0') {
if (purple_network_is_available()) {
- GInetAddress *address = NULL;
- purple_debug_info("network", "running DNS query for TURN server\n");
- address = purple_network_ip_lookup(turn_server);
- turn_ip = g_inet_address_to_string(address);
- g_object_unref(G_OBJECT(address));
+ g_resolver_lookup_by_name_async(g_resolver_get_default(), + purple_network_ip_lookup_cb, purple_debug_info("network",
"network is unavailable, don't try to update TURN IP");