X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fdevice-handler.c;h=730be857f5e564fdfea8938dbfc134d1f3c679be;hp=78fb159a3026a2d515d05d0467eae27bd4e33938;hb=5314cebf5fe766bdca6c779e785b8dfaa3808142;hpb=75e89298319041ac2cc96102c8345dc175e5e0db diff --git a/discover/device-handler.c b/discover/device-handler.c index 78fb159..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); @@ -358,6 +359,10 @@ void device_handler_reinit(struct device_handler *handler) 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, opt, tmp, list) @@ -1079,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); @@ -1403,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);