ifcfg-rh: allow missing (empty TEAM_CONFIG), which is valid configuration

When config is NULL libteam will use its own default configuration.

Commit 76c3bd9898 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
This commit is contained in:
Jiří Klimeš 2014-02-14 10:05:42 +01:00
parent 3fb13c63c3
commit 3e70fb20d4
2 changed files with 10 additions and 3 deletions

View file

@ -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;
}

View file

@ -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);