settings: fix keyfile plugin priority when explicitly configured (bgo #679655)
The regression was introduced by b38f39cfc6
that
built keyfile plugin into NM (instead of using .so).
This commit is contained in:
@@ -568,12 +568,24 @@ find_plugin (GSList *list, const char *pname)
|
|||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
add_keyfile_plugin (NMSettings *self)
|
||||||
|
{
|
||||||
|
NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self);
|
||||||
|
GObject *keyfile_plugin;
|
||||||
|
|
||||||
|
keyfile_plugin = nm_settings_keyfile_plugin_new (priv->config_file);
|
||||||
|
g_assert (keyfile_plugin);
|
||||||
|
add_plugin (self, NM_SYSTEM_CONFIG_INTERFACE (keyfile_plugin));
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
load_plugins (NMSettings *self, const char **plugins, GError **error)
|
load_plugins (NMSettings *self, const char **plugins, GError **error)
|
||||||
{
|
{
|
||||||
NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self);
|
NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self);
|
||||||
GSList *list = NULL;
|
GSList *list = NULL;
|
||||||
const char **iter;
|
const char **iter;
|
||||||
|
gboolean keyfile_added = FALSE;
|
||||||
gboolean success = TRUE;
|
gboolean success = TRUE;
|
||||||
|
|
||||||
for (iter = plugins; *iter; iter++) {
|
for (iter = plugins; *iter; iter++) {
|
||||||
@@ -587,10 +599,6 @@ load_plugins (NMSettings *self, const char **plugins, GError **error)
|
|||||||
while (isblank (*pname))
|
while (isblank (*pname))
|
||||||
pname++;
|
pname++;
|
||||||
|
|
||||||
/* keyfile plugin built in now */
|
|
||||||
if (!strcmp (pname, "keyfile"))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* ifcfg-fedora was renamed ifcfg-rh; handle old configs here */
|
/* ifcfg-fedora was renamed ifcfg-rh; handle old configs here */
|
||||||
if (!strcmp (pname, "ifcfg-fedora"))
|
if (!strcmp (pname, "ifcfg-fedora"))
|
||||||
pname = "ifcfg-rh";
|
pname = "ifcfg-rh";
|
||||||
@@ -599,6 +607,15 @@ load_plugins (NMSettings *self, const char **plugins, GError **error)
|
|||||||
if (obj)
|
if (obj)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* keyfile plugin is built-in now */
|
||||||
|
if (strcmp (pname, "keyfile") == 0) {
|
||||||
|
if (!keyfile_added) {
|
||||||
|
add_keyfile_plugin (self);
|
||||||
|
keyfile_added = TRUE;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
full_name = g_strdup_printf ("nm-settings-plugin-%s", pname);
|
full_name = g_strdup_printf ("nm-settings-plugin-%s", pname);
|
||||||
path = g_module_build_path (PLUGINDIR, full_name);
|
path = g_module_build_path (PLUGINDIR, full_name);
|
||||||
|
|
||||||
@@ -639,6 +656,10 @@ load_plugins (NMSettings *self, const char **plugins, GError **error)
|
|||||||
list = g_slist_append (list, obj);
|
list = g_slist_append (list, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If keyfile plugin was not among configured plugins, add it as the last one */
|
||||||
|
if (!keyfile_added)
|
||||||
|
add_keyfile_plugin (self);
|
||||||
|
|
||||||
g_slist_foreach (list, (GFunc) g_object_unref, NULL);
|
g_slist_foreach (list, (GFunc) g_object_unref, NULL);
|
||||||
g_slist_free (list);
|
g_slist_free (list);
|
||||||
|
|
||||||
@@ -1732,7 +1753,6 @@ nm_settings_new (const char *config_file,
|
|||||||
{
|
{
|
||||||
NMSettings *self;
|
NMSettings *self;
|
||||||
NMSettingsPrivate *priv;
|
NMSettingsPrivate *priv;
|
||||||
GObject *keyfile_plugin;
|
|
||||||
|
|
||||||
self = g_object_new (NM_TYPE_SETTINGS, NULL);
|
self = g_object_new (NM_TYPE_SETTINGS, NULL);
|
||||||
if (!self)
|
if (!self)
|
||||||
@@ -1752,11 +1772,6 @@ nm_settings_new (const char *config_file,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add the keyfile plugin last */
|
|
||||||
keyfile_plugin = nm_settings_keyfile_plugin_new (config_file);
|
|
||||||
g_assert (keyfile_plugin);
|
|
||||||
add_plugin (self, NM_SYSTEM_CONFIG_INTERFACE (keyfile_plugin));
|
|
||||||
|
|
||||||
unmanaged_specs_changed (NULL, self);
|
unmanaged_specs_changed (NULL, self);
|
||||||
|
|
||||||
dbus_g_connection_register_g_object (priv->bus, NM_DBUS_PATH_SETTINGS, G_OBJECT (self));
|
dbus_g_connection_register_g_object (priv->bus, NM_DBUS_PATH_SETTINGS, G_OBJECT (self));
|
||||||
|
Reference in New Issue
Block a user