]> git.ozlabs.org Git - petitboot/blobdiff - discover/device-handler.c
discover: Track both configured and current autoboot settings
[petitboot] / discover / device-handler.c
index a3891c4564b62644fd5b51ac2d740b4ba1058ac1..5b7afd0d3f56d7be992d3725f757d80d2c2c412a 100644 (file)
@@ -321,7 +321,7 @@ struct device_handler *device_handler_init(struct discover_server *server,
        handler->server = server;
        handler->waitset = waitset;
        handler->dry_run = dry_run;
-       handler->autoboot_enabled = config_get()->autoboot_enabled;
+       handler->autoboot_enabled = config_autoboot_active(config_get());
 
        list_init(&handler->unresolved_boot_options);
 
@@ -351,6 +351,15 @@ void device_handler_reinit(struct device_handler *handler)
        unsigned int i;
 
        device_handler_cancel_default(handler);
+       /* Cancel any pending non-default boot */
+       if (handler->pending_boot) {
+               boot_cancel(handler->pending_boot);
+               handler->pending_boot = NULL;
+               handler->pending_boot_is_default = false;
+       }
+
+       /* Cancel any remaining async jobs */
+       process_stop_async_all();
 
        /* free unresolved boot options */
        list_for_each_entry_safe(&handler->unresolved_boot_options,