Load features after each plugin loaded until all plugins have feature support
authorMartin Willi <martin@revosec.ch>
Mon, 10 Oct 2011 12:14:52 +0000 (14:14 +0200)
committerMartin Willi <martin@revosec.ch>
Fri, 14 Oct 2011 08:05:47 +0000 (10:05 +0200)
src/libstrongswan/plugins/plugin_loader.c

index 39bea23..bf57dc1 100644 (file)
@@ -471,10 +471,9 @@ METHOD(plugin_loader_t, load_plugins, bool,
                        DBG1(DBG_LIB, "loading critical plugin '%s' failed", token);
                }
                free(token);
-       }
-       enumerator->destroy(enumerator);
-       if (!critical_failed)
-       {
+               /* TODO: we currently load features after each plugin is loaded. This
+                * will not be necessary once we have features support in all plugins.
+                */
                while (load_features(this, TRUE, FALSE))
                {
                        /* try load new features until we don't get new ones */
@@ -483,6 +482,10 @@ METHOD(plugin_loader_t, load_plugins, bool,
                {
                        /* second round, ignoring soft dependencies */
                }
+       }
+       enumerator->destroy(enumerator);
+       if (!critical_failed)
+       {
                /* report missing dependencies */
                load_features(this, FALSE, TRUE);
                /* unload plugins that we were not able to load any features for */