pacrunner: remove @domains from private struct

The domain list is not a property of the global pacrunner instance and
can be stored in a local variable.

(cherry picked from commit 10f6854369)
This commit is contained in:
Beniamino Galvani
2017-03-08 14:55:30 +01:00
parent 31327fee98
commit 0160834ea6

View File

@@ -41,7 +41,6 @@ struct remove_data {
typedef struct { typedef struct {
char *iface; char *iface;
GPtrArray *domains;
GDBusProxy *pacrunner; GDBusProxy *pacrunner;
GCancellable *pacrunner_cancellable; GCancellable *pacrunner_cancellable;
GList *args; GList *args;
@@ -84,7 +83,7 @@ remove_data_destroy (struct remove_data *data)
} }
static void static void
add_proxy_config (NMPacrunnerManager *self, GVariantBuilder *proxy_data, const NMProxyConfig *proxy_config) add_proxy_config (GVariantBuilder *proxy_data, const NMProxyConfig *proxy_config)
{ {
const char *pac_url, *pac_script; const char *pac_url, *pac_script;
NMProxyConfigMethod method; NMProxyConfigMethod method;
@@ -113,19 +112,18 @@ add_proxy_config (NMPacrunnerManager *self, GVariantBuilder *proxy_data, const N
} }
static void static void
add_ip4_config (NMPacrunnerManager *self, GVariantBuilder *proxy_data, NMIP4Config *ip4) get_ip4_domains (GPtrArray *domains, NMIP4Config *ip4)
{ {
NMPacrunnerManagerPrivate *priv = NM_PACRUNNER_MANAGER_GET_PRIVATE (self); char *cidr;
int i; int i;
char *cidr = NULL;
/* Extract searches */ /* Extract searches */
for (i = 0; i < nm_ip4_config_get_num_searches (ip4); i++) for (i = 0; i < nm_ip4_config_get_num_searches (ip4); i++)
g_ptr_array_add (priv->domains, g_strdup (nm_ip4_config_get_search (ip4, i))); g_ptr_array_add (domains, g_strdup (nm_ip4_config_get_search (ip4, i)));
/* Extract domains */ /* Extract domains */
for (i = 0; i < nm_ip4_config_get_num_domains (ip4); i++) for (i = 0; i < nm_ip4_config_get_num_domains (ip4); i++)
g_ptr_array_add (priv->domains, g_strdup (nm_ip4_config_get_domain (ip4, i))); g_ptr_array_add (domains, g_strdup (nm_ip4_config_get_domain (ip4, i)));
/* Add addresses and routes in CIDR form */ /* Add addresses and routes in CIDR form */
for (i = 0; i < nm_ip4_config_get_num_addresses (ip4); i++) { for (i = 0; i < nm_ip4_config_get_num_addresses (ip4); i++) {
@@ -134,8 +132,7 @@ add_ip4_config (NMPacrunnerManager *self, GVariantBuilder *proxy_data, NMIP4Conf
cidr = g_strdup_printf ("%s/%u", cidr = g_strdup_printf ("%s/%u",
nm_utils_inet4_ntop (address->address, NULL), nm_utils_inet4_ntop (address->address, NULL),
address->plen); address->plen);
g_ptr_array_add (priv->domains, g_strdup (cidr)); g_ptr_array_add (domains, cidr);
g_free (cidr);
} }
for (i = 0; i < nm_ip4_config_get_num_routes (ip4); i++) { for (i = 0; i < nm_ip4_config_get_num_routes (ip4); i++) {
@@ -144,25 +141,23 @@ add_ip4_config (NMPacrunnerManager *self, GVariantBuilder *proxy_data, NMIP4Conf
cidr = g_strdup_printf ("%s/%u", cidr = g_strdup_printf ("%s/%u",
nm_utils_inet4_ntop (routes->network, NULL), nm_utils_inet4_ntop (routes->network, NULL),
routes->plen); routes->plen);
g_ptr_array_add (priv->domains, g_strdup (cidr)); g_ptr_array_add (domains, cidr);
g_free (cidr);
} }
} }
static void static void
add_ip6_config (NMPacrunnerManager *self, GVariantBuilder *proxy_data, NMIP6Config *ip6) get_ip6_domains (GPtrArray *domains, NMIP6Config *ip6)
{ {
NMPacrunnerManagerPrivate *priv = NM_PACRUNNER_MANAGER_GET_PRIVATE (self); char *cidr;
int i; int i;
char *cidr = NULL;
/* Extract searches */ /* Extract searches */
for (i = 0; i < nm_ip6_config_get_num_searches (ip6); i++) for (i = 0; i < nm_ip6_config_get_num_searches (ip6); i++)
g_ptr_array_add (priv->domains, g_strdup (nm_ip6_config_get_search (ip6, i))); g_ptr_array_add (domains, g_strdup (nm_ip6_config_get_search (ip6, i)));
/* Extract domains */ /* Extract domains */
for (i = 0; i < nm_ip6_config_get_num_domains (ip6); i++) for (i = 0; i < nm_ip6_config_get_num_domains (ip6); i++)
g_ptr_array_add (priv->domains, g_strdup (nm_ip6_config_get_domain (ip6, i))); g_ptr_array_add (domains, g_strdup (nm_ip6_config_get_domain (ip6, i)));
/* Add addresses and routes in CIDR form */ /* Add addresses and routes in CIDR form */
for (i = 0; i < nm_ip6_config_get_num_addresses (ip6); i++) { for (i = 0; i < nm_ip6_config_get_num_addresses (ip6); i++) {
@@ -171,8 +166,7 @@ add_ip6_config (NMPacrunnerManager *self, GVariantBuilder *proxy_data, NMIP6Conf
cidr = g_strdup_printf ("%s/%u", cidr = g_strdup_printf ("%s/%u",
nm_utils_inet6_ntop (&address->address, NULL), nm_utils_inet6_ntop (&address->address, NULL),
address->plen); address->plen);
g_ptr_array_add (priv->domains, g_strdup (cidr)); g_ptr_array_add (domains, cidr);
g_free (cidr);
} }
for (i = 0; i < nm_ip6_config_get_num_routes (ip6); i++) { for (i = 0; i < nm_ip6_config_get_num_routes (ip6); i++) {
@@ -181,8 +175,7 @@ add_ip6_config (NMPacrunnerManager *self, GVariantBuilder *proxy_data, NMIP6Conf
cidr = g_strdup_printf ("%s/%u", cidr = g_strdup_printf ("%s/%u",
nm_utils_inet6_ntop (&routes->network, NULL), nm_utils_inet6_ntop (&routes->network, NULL),
routes->plen); routes->plen);
g_ptr_array_add (priv->domains, g_strdup (cidr)); g_ptr_array_add (domains, cidr);
g_free (cidr);
} }
} }
@@ -312,6 +305,7 @@ nm_pacrunner_manager_send (NMPacrunnerManager *self,
NMPacrunnerManagerPrivate *priv; NMPacrunnerManagerPrivate *priv;
GVariantBuilder proxy_data; GVariantBuilder proxy_data;
GVariant *pacrunner_manager_args; GVariant *pacrunner_manager_args;
GPtrArray *domains;
g_return_if_fail (NM_IS_PACRUNNER_MANAGER (self)); g_return_if_fail (NM_IS_PACRUNNER_MANAGER (self));
g_return_if_fail (proxy_config); g_return_if_fail (proxy_config);
@@ -343,18 +337,18 @@ nm_pacrunner_manager_send (NMPacrunnerManager *self,
g_variant_new_string ("direct")); g_variant_new_string ("direct"));
} }
priv->domains = g_ptr_array_new_with_free_func (g_free); domains = g_ptr_array_new_with_free_func (g_free);
/* Extract stuff from configs */ /* Extract stuff from configs */
add_proxy_config (self, &proxy_data, proxy_config); add_proxy_config (&proxy_data, proxy_config);
if (ip4_config) if (ip4_config)
add_ip4_config (self, &proxy_data, ip4_config); get_ip4_domains (domains, ip4_config);
if (ip6_config) if (ip6_config)
add_ip6_config (self, &proxy_data, ip6_config); get_ip6_domains (domains, ip6_config);
g_ptr_array_add (priv->domains, NULL); g_ptr_array_add (domains, NULL);
strv = (char **) g_ptr_array_free (priv->domains, (priv->domains->len == 1)); strv = (char **) g_ptr_array_free (domains, (domains->len == 1));
if (strv) { if (strv) {
g_variant_builder_add (&proxy_data, "{sv}", g_variant_builder_add (&proxy_data, "{sv}",