diff options
author | Jiří Klimeš <jklimes@redhat.com> | 2014-02-14 10:05:42 +0100 |
---|---|---|
committer | Jiří Klimeš <jklimes@redhat.com> | 2014-02-14 10:05:42 +0100 |
commit | 3e70fb20d4aabcdc3d874ae32f31a17eb5c76f60 (patch) | |
tree | bce0370c4b29523262c68560fc926906ec3b7273 | |
parent | 3fb13c63c3f77170a5301f0613ad37df482f9f4c (diff) | |
download | NetworkManager-3e70fb20d4aabcdc3d874ae32f31a17eb5c76f60.tar.gz |
ifcfg-rh: allow missing (empty TEAM_CONFIG), which is valid configuration
When config is NULL libteam will use its own default configuration.
Commit 76c3bd9898611ebbb6b33890257206b5776b79e7 changed that and refused to
create 'team' setting making connection invalid. It didn't set an error as
well, which resulted in
ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-team ...
ifcfg-rh: error: (unknown)
GLib-CRITICAL **: g_propagate_error: assertion `src != NULL' failed
-rw-r--r-- | src/settings/plugins/ifcfg-rh/plugin.c | 5 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/reader.c | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/settings/plugins/ifcfg-rh/plugin.c b/src/settings/plugins/ifcfg-rh/plugin.c index 6024202f92..0f8fcb8a00 100644 --- a/src/settings/plugins/ifcfg-rh/plugin.c +++ b/src/settings/plugins/ifcfg-rh/plugin.c @@ -136,7 +136,10 @@ _internal_new_connection (SCPluginIfcfg *self, PLUGIN_PRINT (IFCFG_PLUGIN_NAME, " error: %s", (local && local->message) ? local->message : "(unknown)"); } - g_propagate_error (error, local); + if (local) + g_propagate_error (error, local); + else + g_set_error (error, IFCFG_PLUGIN_ERROR, 0, "(unknown)"); return NULL; } diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c index 41055a2d2e..82d2af26c2 100644 --- a/src/settings/plugins/ifcfg-rh/reader.c +++ b/src/settings/plugins/ifcfg-rh/reader.c @@ -4193,6 +4193,7 @@ bond_connection_from_ifcfg (const char *file, return connection; } +/* Check 'error' for errors. Missing config (NULL return value) is a valid case. */ static char * read_team_config (shvarFile *ifcfg, const char *key, GError **error) { @@ -4225,6 +4226,7 @@ make_team_setting (shvarFile *ifcfg, { NMSettingTeam *s_team; char *value; + GError *local_err = NULL; s_team = NM_SETTING_TEAM (nm_setting_team_new ()); @@ -4237,9 +4239,11 @@ make_team_setting (shvarFile *ifcfg, g_object_set (s_team, NM_SETTING_TEAM_INTERFACE_NAME, value, NULL); g_free (value); - value = read_team_config (ifcfg, "TEAM_CONFIG", error); - if (!value) + value = read_team_config (ifcfg, "TEAM_CONFIG", &local_err); + if (local_err) { + g_propagate_error (error, local_err); goto error; + } g_object_set (s_team, NM_SETTING_TEAM_CONFIG, value, NULL); g_free (value); |