[settings] Always process all settings applicators

Settings applicators are entirely independent, and there is no reason
why a failure in one applicator should prevent other applicators from
being processed.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/594/head
Michael Brown 2022-02-16 00:12:55 +00:00
parent 11e17991d0
commit 674963e2a6
1 changed files with 3 additions and 7 deletions

View File

@ -411,9 +411,8 @@ struct settings * find_settings ( const char *name ) {
/**
* Apply all settings
*
* @ret rc Return status code
*/
static int apply_settings ( void ) {
static void apply_settings ( void ) {
struct settings_applicator *applicator;
int rc;
@ -422,11 +421,9 @@ static int apply_settings ( void ) {
if ( ( rc = applicator->apply() ) != 0 ) {
DBG ( "Could not apply settings using applicator "
"%p: %s\n", applicator, strerror ( rc ) );
return rc;
/* Continue to apply remaining settings */
}
}
return 0;
}
/**
@ -644,8 +641,7 @@ int store_setting ( struct settings *settings, const struct setting *setting,
*/
for ( ; settings ; settings = settings->parent ) {
if ( settings == &settings_root ) {
if ( ( rc = apply_settings() ) != 0 )
return rc;
apply_settings();
break;
}
}