]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[settings] Always process all settings applicators
authorMichael Brown <mcb30@ipxe.org>
Wed, 16 Feb 2022 00:12:55 +0000 (00:12 +0000)
committerMichael Brown <mcb30@ipxe.org>
Wed, 16 Feb 2022 13:50:41 +0000 (13:50 +0000)
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>
src/core/settings.c

index fcdf98d2b71618e7fa456d236252287731a5bf85..da075baa86a78be058f8d3fe001bad568df023c4 100644 (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;
                }
        }