dns: initialize rc-manager in init_resolv_conf_mode()

The "dns" and "rc-manager" properties are strongly related. Initialize them
together in init_resolv_conf_mode().

One difference is, that we now set rc_manager before setting the mode.
But that shouldn't matter.
This commit is contained in:
Thomas Haller 2016-04-21 17:17:45 +02:00
parent aea2d98e2d
commit a252dfdb9d

View file

@ -1477,12 +1477,21 @@ static void
init_resolv_conf_mode (NMDnsManager *self)
{
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self);
NMDnsManagerResolvConfManager rc_manager;
const char *mode, *mode_unknown;
int immutable = -1;
rc_manager = _get_resolv_conf_manager (priv->config);
if (rc_manager == NM_DNS_MANAGER_RESOLV_CONF_MAN_UNKNOWN) {
_LOGW ("unknown resolv.conf manager '%s'",
nm_config_data_get_rc_manager (nm_config_get_data (priv->config)));
rc_manager = _get_resolv_conf_manager_default ();
}
mode = nm_config_data_get_dns_mode (nm_config_get_data (priv->config));
if ( priv->mode_initialized
&& rc_manager == priv->rc_manager
&& nm_streq0 (mode, priv->last_mode)
&& ( nm_streq0 (mode, "none")
|| priv->last_immutable == _get_resconf_immutable (&immutable))) {
@ -1493,6 +1502,9 @@ init_resolv_conf_mode (NMDnsManager *self)
return;
}
priv->rc_manager = rc_manager;
_LOGI ("using resolv.conf manager '%s'", _rc_manager_to_string (priv->rc_manager));
priv->mode_initialized = TRUE;
g_free (priv->last_mode);
priv->last_mode = g_strdup (mode);
@ -1539,26 +1551,6 @@ init_resolv_conf_mode (NMDnsManager *self)
immutable ? ", resolv.conf immutable" : "");
}
static void
init_resolv_conf_manager (NMDnsManager *self)
{
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self);
NMDnsManagerResolvConfManager rc_manager;
rc_manager = _get_resolv_conf_manager (priv->config);
if (rc_manager == NM_DNS_MANAGER_RESOLV_CONF_MAN_UNKNOWN) {
_LOGW ("unknown resolv.conf manager '%s'",
nm_config_data_get_rc_manager (nm_config_get_data (priv->config)));
rc_manager = _get_resolv_conf_manager_default ();
}
if (rc_manager == priv->rc_manager)
return;
priv->rc_manager = rc_manager;
_LOGI ("using resolv.conf manager '%s'", _rc_manager_to_string (priv->rc_manager));
}
static void
config_changed_cb (NMConfig *config,
NMConfigData *config_data,
@ -1569,6 +1561,7 @@ config_changed_cb (NMConfig *config,
GError *error = NULL;
if (NM_FLAGS_ANY (changes, NM_CONFIG_CHANGE_DNS_MODE |
NM_CONFIG_CHANGE_RC_MANAGER |
NM_CONFIG_CHANGE_SIGHUP)) {
/* reload the resolv-conf mode also on SIGHUP (when DNS_MODE didn't change).
* The reason is, that the configuration also depends on whether resolv.conf
@ -1577,9 +1570,6 @@ config_changed_cb (NMConfig *config,
init_resolv_conf_mode (self);
}
if (NM_FLAGS_HAS (changes, NM_CONFIG_CHANGE_RC_MANAGER))
init_resolv_conf_manager (self);
if (NM_FLAGS_ANY (changes, NM_CONFIG_CHANGE_SIGHUP |
NM_CONFIG_CHANGE_SIGUSR1 |
NM_CONFIG_CHANGE_DNS_MODE |
@ -1611,7 +1601,6 @@ nm_dns_manager_init (NMDnsManager *self)
G_CALLBACK (config_changed_cb),
self);
init_resolv_conf_mode (self);
init_resolv_conf_manager (self);
}
static void