Mercurial > pidgin.yaz
comparison libgaim/dnsquery.c @ 14358:fdf65b672b87
[gaim-migrate @ 17064]
Fix a small memleak
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 27 Aug 2006 22:04:09 +0000 |
parents | e01a8316b08b |
children | 92eb7a040663 |
comparison
equal
deleted
inserted
replaced
14357:4e14503b9bac | 14358:fdf65b672b87 |
---|---|
85 gaim_dnsquery_resolved(GaimDnsQueryData *query_data, GSList *hosts) | 85 gaim_dnsquery_resolved(GaimDnsQueryData *query_data, GSList *hosts) |
86 { | 86 { |
87 gaim_debug_info("dnsquery", "IP resolved for %s\n", query_data->hostname); | 87 gaim_debug_info("dnsquery", "IP resolved for %s\n", query_data->hostname); |
88 if (query_data->callback != NULL) | 88 if (query_data->callback != NULL) |
89 query_data->callback(hosts, query_data->data, NULL); | 89 query_data->callback(hosts, query_data->data, NULL); |
90 else | |
91 { | |
92 /* | |
93 * Callback is a required parameter, but it can get set to | |
94 * NULL if we cancel a thread-based DNS lookup. So we need | |
95 * to free hosts. | |
96 */ | |
97 while (hosts != NULL) | |
98 { | |
99 hosts = g_slist_remove(hosts, hosts->data); | |
100 g_free(hosts->data); | |
101 hosts = g_slist_remove(hosts, hosts->data); | |
102 } | |
103 } | |
104 | |
90 gaim_dnsquery_destroy(query_data); | 105 gaim_dnsquery_destroy(query_data); |
91 } | 106 } |
92 | 107 |
93 static void | 108 static void |
94 gaim_dnsquery_failed(GaimDnsQueryData *query_data, const gchar *error_message) | 109 gaim_dnsquery_failed(GaimDnsQueryData *query_data, const gchar *error_message) |
564 { | 579 { |
565 GaimDnsQueryData *query_data; | 580 GaimDnsQueryData *query_data; |
566 | 581 |
567 g_return_val_if_fail(hostname != NULL, NULL); | 582 g_return_val_if_fail(hostname != NULL, NULL); |
568 g_return_val_if_fail(port != 0, NULL); | 583 g_return_val_if_fail(port != 0, NULL); |
584 g_return_val_if_fail(callback != NULL, NULL); | |
569 | 585 |
570 query_data = g_new(GaimDnsQueryData, 1); | 586 query_data = g_new(GaimDnsQueryData, 1); |
571 query_data->hostname = g_strdup(hostname); | 587 query_data->hostname = g_strdup(hostname); |
572 g_strstrip(query_data->hostname); | 588 g_strstrip(query_data->hostname); |
573 query_data->port = port; | 589 query_data->port = port; |
726 { | 742 { |
727 GaimDnsQueryData *query_data; | 743 GaimDnsQueryData *query_data; |
728 | 744 |
729 g_return_val_if_fail(hostname != NULL, NULL); | 745 g_return_val_if_fail(hostname != NULL, NULL); |
730 g_return_val_if_fail(port != 0, NULL); | 746 g_return_val_if_fail(port != 0, NULL); |
747 g_return_val_if_fail(callback != NULL, NULL); | |
731 | 748 |
732 gaim_debug_info("dnsquery", "Performing DNS lookup for %s\n", hostname); | 749 gaim_debug_info("dnsquery", "Performing DNS lookup for %s\n", hostname); |
733 | 750 |
734 query_data = g_new(GaimDnsQueryData, 1); | 751 query_data = g_new(GaimDnsQueryData, 1); |
735 query_data->hostname = g_strdup(hostname); | 752 query_data->hostname = g_strdup(hostname); |