Mercurial > pidgin.yaz
diff libpurple/dnsquery.c @ 31930:0eceb1304f53
Add new DNS-related API to perform lookups in the context of an account.
Combined with the new "Tor/Privacy" proxy setting, this allows us to prevent
DNS lookups when the user has selected a proxy that they may want to use to
for privacy.
Refs #11110
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Tue, 19 Apr 2011 04:58:17 +0000 |
parents | 68a1efda3654 |
children | 92f3d821653f |
line wrap: on
line diff
--- a/libpurple/dnsquery.c Tue Apr 19 04:41:59 2011 +0000 +++ b/libpurple/dnsquery.c Tue Apr 19 04:58:17 2011 +0000 @@ -54,6 +54,7 @@ PurpleDnsQueryConnectFunction callback; gpointer data; guint timeout; + PurpleAccount *account; #if defined(PURPLE_DNSQUERY_USE_FORK) PurpleDnsQueryResolverProcess *resolver; @@ -861,6 +862,7 @@ initiate_resolving(gpointer data) { PurpleDnsQueryData *query_data; + PurpleProxyType proxy_type; query_data = data; query_data->timeout = 0; @@ -869,6 +871,14 @@ /* resolve_ip calls purple_dnsquery_resolved */ return FALSE; + proxy_type = purple_proxy_info_get_type( + purple_proxy_get_setup(query_data->account)); + if (proxy_type == PURPLE_PROXY_TOR) { + purple_dnsquery_failed(query_data, + _("Aborting DNS lookup in Tor Proxy mode.")); + return FALSE; + } + if (purple_dnsquery_ui_resolve(query_data)) /* The UI is handling the resolve; we're done */ return FALSE; @@ -878,9 +888,8 @@ return FALSE; } - PurpleDnsQueryData * -purple_dnsquery_a(const char *hostname, int port, +purple_dnsquery_a_account(PurpleAccount *account, const char *hostname, int port, PurpleDnsQueryConnectFunction callback, gpointer data) { PurpleDnsQueryData *query_data; @@ -897,6 +906,7 @@ query_data->port = port; query_data->callback = callback; query_data->data = data; + query_data->account = account; if (*query_data->hostname == '\0') { @@ -909,6 +919,12 @@ return query_data; } +PurpleDnsQueryData * +purple_dnsquery_a(const char *hostname, int port, + PurpleDnsQueryConnectFunction callback, gpointer data) +{ + return purple_dnsquery_a_account(NULL, hostname, port, callback, data); +} void purple_dnsquery_destroy(PurpleDnsQueryData *query_data)