]> git.ozlabs.org Git - petitboot/blobdiff - discover/device-handler.c
discover/discover-server: Restrict clients based on uid
[petitboot] / discover / device-handler.c
index cf379e78ca7f7ecc1f52adbca0fedc2e22903fa8..729ed2c0f52ae76f9cbc7474cd803ed773bab3a6 100644 (file)
@@ -534,6 +534,7 @@ static void _device_handler_vstatus(struct device_handler *handler,
        status.type = type;
        status.message = talloc_vasprintf(handler, fmt, ap);
        status.backlog = false;
+       status.boot_active = false;
 
        device_handler_status(handler, &status);
 
@@ -1278,6 +1279,7 @@ static int device_handler_requery_timeout_fn(void *data)
        struct requery_data *rqd = data;
        struct device_handler *handler;
        struct discover_device *device;
+       bool autoboot;
 
        handler = rqd->handler;
        device = rqd->device;
@@ -1300,9 +1302,14 @@ static int device_handler_requery_timeout_fn(void *data)
                talloc_free(opt);
        }
 
+       /* Track whether autoboot was enabled, if we cancel a default option
+        * it will be switched off.
+        */
+       autoboot = handler->autoboot_enabled;
+
        list_for_each_entry_safe(&device->boot_options, opt, tmp, list) {
                if (opt == handler->default_boot_option) {
-                       pb_log("Default option %s cancelled since device is being requeried",
+                       pb_log("Default option %s cancelled since device is being requeried\n",
                                        opt->option->name);
                        device_handler_cancel_default(handler);
                }
@@ -1310,6 +1317,8 @@ static int device_handler_requery_timeout_fn(void *data)
                talloc_free(opt);
        }
 
+       handler->autoboot_enabled = autoboot;
+
        discover_server_notify_device_remove(handler->server, device->device);
        device->notified = false;
 
@@ -1492,8 +1501,11 @@ void device_handler_update_config(struct device_handler *handler,
        int rc;
 
        rc = config_set(config);
-       if (rc)
+       if (rc) {
+               device_handler_status_err(handler,
+                               "Failed to update configuration!");
                return;
+       }
 
        discover_server_notify_config(handler->server, config);
        device_handler_update_lang(config->lang);