X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fdevice-handler.c;h=22866e6600e29cb869c6196055447fa74b1619f8;hp=b93cdfa1130cc5c956e6608a997c118a3786cd08;hb=24a530d0b58f57f151ee6d3df9f747ae98ef759f;hpb=1860aac29624b1cb292a7ca549dc063bcd3f9bb6 diff --git a/discover/device-handler.c b/discover/device-handler.c index b93cdfa..22866e6 100644 --- a/discover/device-handler.c +++ b/discover/device-handler.c @@ -285,6 +285,9 @@ struct device_handler *device_handler_init(struct discover_server *server, parser_init(); + if (config_get()->safe_mode) + return handler; + rc = device_handler_init_sources(handler); if (rc) { talloc_free(handler); @@ -814,7 +817,12 @@ void device_handler_cancel_default(struct device_handler *handler) void device_handler_update_config(struct device_handler *handler, struct config *config) { - config_set(config); + int rc; + + rc = config_set(config); + if (rc) + return; + discover_server_notify_config(handler->server, config); device_handler_reinit(handler); } @@ -842,6 +850,13 @@ static int device_handler_init_sources(struct device_handler *handler) static void device_handler_reinit_sources(struct device_handler *handler) { + /* if we haven't initialised sources previously (becuase we started in + * safe mode), then init once here. */ + if (!(handler->udev || handler->network || handler->user_event)) { + device_handler_init_sources(handler); + return; + } + udev_reinit(handler->udev); network_shutdown(handler->network);