X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fdevice-handler.c;h=730be857f5e564fdfea8938dbfc134d1f3c679be;hp=a3891c4564b62644fd5b51ac2d740b4ba1058ac1;hb=5314cebf5fe766bdca6c779e785b8dfaa3808142;hpb=6fab22db693aaf495b8be0699e6d177ba69d79ed diff --git a/discover/device-handler.c b/discover/device-handler.c index a3891c4..730be85 100644 --- a/discover/device-handler.c +++ b/discover/device-handler.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -321,7 +322,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 +352,16 @@ 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(); + pending_network_jobs_cancel(); /* free unresolved boot options */ list_for_each_entry_safe(&handler->unresolved_boot_options, @@ -1073,6 +1084,8 @@ int device_handler_dhcp(struct device_handler *handler, _("Processing DHCP lease response (ip: %s)"), event_get_param(event, "ip")); + pending_network_jobs_start(); + /* create our context */ ctx = device_handler_discover_context_create(handler, dev); talloc_steal(ctx, event); @@ -1397,6 +1410,8 @@ static void device_handler_reinit_sources(struct device_handler *handler) return; } + system_info_reinit(); + udev_reinit(handler->udev); network_shutdown(handler->network);