--- a/libpurple/dnssrv.c Tue Jul 19 20:07:25 2011 +0000
+++ b/libpurple/dnssrv.c Wed Jul 20 05:04:37 2011 +0000
@@ -250,6 +250,52 @@
+static PurpleSrvTxtQueryData * +query_data_new(int type, gchar *query, gpointer extradata) + PurpleSrvTxtQueryData *query_data = g_new0(PurpleSrvTxtQueryData, 1); + query_data->type = type; + query_data->extradata = extradata; + query_data->query = query; + query_data->fd_in = -1; + query_data->fd_out = -1; +purple_srv_txt_query_destroy(PurpleSrvTxtQueryData *query_data) + PurpleSrvTxtQueryUiOps *ops = purple_srv_txt_query_get_ui_ops(); + if (ops && ops->destroy) + ops->destroy(query_data); + if (query_data->handle > 0) + purple_input_remove(query_data->handle); + 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 + query_data->cb.srv = NULL; + g_free(query_data->error_message); + if (query_data->fd_out != -1) + close(query_data->fd_out); + if (query_data->fd_in != -1) + close(query_data->fd_in); + g_free(query_data->query); dns_str_is_ascii(const char *name)
@@ -731,15 +777,8 @@
- query_data = g_new0(PurpleSrvTxtQueryData, 1);
- query_data->type = PurpleDnsTypeSrv;
+ query_data = query_data_new(PurpleDnsTypeSrv, extradata, query); - query_data->extradata = extradata;
- query_data->query = query;
- query_data->fd_in = -1;
- query_data->fd_out = -1;
if (purple_srv_txt_query_ui_resolve(query_data))
@@ -868,15 +907,8 @@
- query_data = g_new0(PurpleSrvTxtQueryData, 1);
- query_data->type = PurpleDnsTypeTxt;
+ query_data = query_data_new(PurpleDnsTypeTxt, query, extradata); - query_data->extradata = extradata;
- query_data->query = query;
- query_data->fd_in = -1;
- query_data->fd_out = -1;
if (purple_srv_txt_query_ui_resolve(query_data)) {
/* query intentionally not freed
@@ -959,38 +991,6 @@
-purple_srv_txt_query_destroy(PurpleSrvTxtQueryData *query_data)
- PurpleSrvTxtQueryUiOps *ops = purple_srv_txt_query_get_ui_ops();
- if (ops && ops->destroy)
- ops->destroy(query_data);
- if (query_data->handle > 0)
- purple_input_remove(query_data->handle);
- 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
- query_data->cb.srv = NULL;
- g_free(query_data->error_message);
- if (query_data->fd_out != -1)
- close(query_data->fd_out);
- if (query_data->fd_in != -1)
- close(query_data->fd_in);
- g_free(query_data->query);
purple_txt_cancel(PurpleSrvTxtQueryData *query_data)
purple_srv_txt_query_destroy(query_data);