# HG changeset patch # User Daniel Atallah # Date 1174258617 0 # Node ID ccc28043f4234a911ad6db533e878dc0334cc97f # Parent c02a897a67c7447406e155d480fd14f65c1eb6f0# Parent 76bdff454d6f8b32a707577505535c495620bd61 merge of '5d82380976ddbe6635550905c1fac7198a445809' and 'c406626cbfaf8f3f5e035c3cb8c90c21bc8365f5' diff -r c02a897a67c7 -r ccc28043f423 libpurple/connection.c --- a/libpurple/connection.c Sun Mar 18 21:12:40 2007 +0000 +++ b/libpurple/connection.c Sun Mar 18 22:56:57 2007 +0000 @@ -435,7 +435,7 @@ g_return_if_fail(gc != NULL); - if (text != NULL) { + if (text == NULL) { g_critical("gaim_connection_error: check `text != NULL' failed"); text = _("Unknown error"); } diff -r c02a897a67c7 -r ccc28043f423 libpurple/dnsquery.c --- a/libpurple/dnsquery.c Sun Mar 18 21:12:40 2007 +0000 +++ b/libpurple/dnsquery.c Sun Mar 18 22:56:57 2007 +0000 @@ -758,7 +758,7 @@ { char message[1024]; g_snprintf(message, sizeof(message), _("Thread creation failure: %s"), - err ? err->message : _("Unknown reason")); + (err && err->message) ? err->message : _("Unknown reason")); g_error_free(err); gaim_dnsquery_failed(query_data, message); } diff -r c02a897a67c7 -r ccc28043f423 libpurple/dnssrv.c --- a/libpurple/dnssrv.c Sun Mar 18 21:12:40 2007 +0000 +++ b/libpurple/dnssrv.c Sun Mar 18 22:56:57 2007 +0000 @@ -110,7 +110,7 @@ #ifdef HAVE_SIGNAL_H gaim_restore_default_signal_handlers(); #endif - + if (read(in, query, 256) <= 0) _exit(0); @@ -222,9 +222,9 @@ GaimSrvResponse *srvres_tmp = NULL; GSList *lst = query_data->results; - size = g_slist_length(query_data->results); + size = g_slist_length(lst); - if(query_data->cb) + if(query_data->cb && size > 0) srvres_tmp = srvres = g_new0(GaimSrvResponse, size); while (lst) { if(query_data->cb) @@ -234,10 +234,10 @@ } query_data->results = NULL; + + gaim_debug_info("dnssrv", "found %d SRV entries\n", size); } - gaim_debug_info("dnssrv", "found %d SRV entries\n", size); - if(query_data->cb) query_data->cb(srvres, size, query_data->extradata); @@ -367,29 +367,22 @@ query_data->query = query; query_data->extradata = extradata; - if (!MyDnsQuery_UTF8 || !MyDnsRecordListFree) { - query_data->error_message = g_strdup_printf("System missing DNS API (Requires W2K+)\n"); - - /* Asynchronously call the callback since stuff may not expect - * the callback to be called before this returns */ - query_data->handle = g_idle_add(res_main_thread_cb, query_data); - - return query_data; + if (!MyDnsQuery_UTF8 || !MyDnsRecordListFree) + query_data->error_message = g_strdup("System missing DNS API (Requires W2K+)\n"); + else { + query_data->resolver = g_thread_create(res_thread, query_data, FALSE, &err); + if (query_data->resolver == NULL) { + query_data->error_message = g_strdup_printf("SRV thread create failure: %s\n", (err && err->message) ? err->message : ""); + g_error_free(err); + } } - query_data->resolver = g_thread_create(res_thread, query_data, FALSE, &err); - if (query_data->resolver == NULL) - { - query_data->error_message = g_strdup_printf("SRV thread create failure: %s\n", err ? err->message : ""); - g_error_free(err); - - /* Asynchronously call the callback since stuff may not expect - * the callback to be called before this returns */ + /* The query isn't going to happen, so finish the SRV lookup now. + * Asynchronously call the callback since stuff may not expect + * the callback to be called before this returns */ + if (query_data->error_message != NULL) query_data->handle = g_idle_add(res_main_thread_cb, query_data); - return query_data; - } - return query_data; #endif }