static gboolean purple_dnsquery_ui_resolve(PurpleDnsQueryData *query_data) { PurpleDnsQueryUiOps *ops = purple_dnsquery_get_ui_ops(); if (ops && ops->resolve_host) return ops->resolve_host(query_data, purple_dnsquery_resolved, purple_dnsquery_failed); return FALSE; }
void purple_dnsquery_destroy(PurpleDnsQueryData *query_data) { PurpleDnsQueryUiOps *ops = purple_dnsquery_get_ui_ops(); if (ops && ops->destroy) ops->destroy(query_data); #if defined(PURPLE_DNSQUERY_USE_FORK) queued_requests = g_slist_remove(queued_requests, query_data); if (query_data->resolver != NULL) /* * This is only non-NULL when we're cancelling an in-progress * query. Ideally we would tell our resolver child to stop * resolving shit and then we would add it back to the * free_dns_children linked list. However, it's hard to tell * children stuff, they just don't listen. So we'll just * kill the process and allow a new child to be started if we * have more stuff to resolve. */ purple_dnsquery_resolver_destroy(query_data->resolver); #elif defined _WIN32 /* end PURPLE_DNSQUERY_USE_FORK */ if (query_data->resolver != NULL) { /* * It's not really possible to kill a thread. So instead we * just set the callback to NULL and let the DNS lookup * finish. */ query_data->callback = NULL; return; } while (query_data->hosts != NULL) { /* Discard the length... */ query_data->hosts = g_slist_remove(query_data->hosts, query_data->hosts->data); /* Free the address... */ g_free(query_data->hosts->data); query_data->hosts = g_slist_remove(query_data->hosts, query_data->hosts->data); } g_free(query_data->error_message); #endif /* end _WIN32 */ if (query_data->timeout > 0) purple_timeout_remove(query_data->timeout); g_free(query_data->hostname); g_free(query_data); }
void purple_dnsquery_destroy(PurpleDnsQueryData *query_data) { PurpleDnsQueryUiOps *ops = purple_dnsquery_get_ui_ops(); if (ops && ops->destroy) ops->destroy(query_data); #if defined(__unix__) || defined(__APPLE__) queued_requests = g_slist_remove(queued_requests, query_data); if (query_data->resolver != NULL) /* * Ideally we would tell our resolver child to stop resolving * shit and then we would add it back to the free_dns_children * linked list. However, it's hard to tell children stuff, * they just don't listen. */ purple_dnsquery_resolver_destroy(query_data->resolver); #elif defined _WIN32 /* end __unix__ || __APPLE__ */ if (query_data->resolver != NULL) { /* * It's not really possible to kill a thread. So instead we * just set the callback to NULL and let the DNS lookup * finish. */ query_data->callback = NULL; return; } while (query_data->hosts != NULL) { /* Discard the length... */ query_data->hosts = g_slist_remove(query_data->hosts, query_data->hosts->data); /* Free the address... */ g_free(query_data->hosts->data); query_data->hosts = g_slist_remove(query_data->hosts, query_data->hosts->data); } g_free(query_data->error_message); #endif if (query_data->timeout > 0) purple_timeout_remove(query_data->timeout); g_free(query_data->hostname); g_free(query_data); }