]> git.ozlabs.org Git - petitboot/commitdiff
ui/ncurses: Remember to abort boot on server connect
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>
Thu, 26 May 2016 06:08:19 +0000 (16:08 +1000)
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>
Thu, 26 May 2016 06:08:19 +0000 (16:08 +1000)
The UI can now come up before the server, but in order for a key press
to cancel autoboot a key has to be pressed once the server connects.
Instead remember to cancel autoboot if a key has been pressed at any
point.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
ui/ncurses/nc-cui.c

index a2de48e75f3e71c8bf94571896ce4d6d327196b9..bd727a5b5fe35ce6f2e30e2e75dc485e419fd358 100644 (file)
@@ -423,11 +423,16 @@ static int cui_process_key(void *arg)
                if (c == ERR)
                        break;
 
-               if (!cui->has_input && cui->client) {
-                       pb_log("UI input received (key = %d), aborting "
-                                       "default boot\n", c);
-                       discover_client_cancel_default(cui->client);
+               if (!cui->has_input) {
                        cui->has_input = true;
+                       if (cui->client) {
+                               pb_log("UI input received (key = %d), aborting "
+                                       "default boot\n", c);
+                               discover_client_cancel_default(cui->client);
+                       } else {
+                               pb_log("UI input received (key = %d), aborting "
+                                       "once server connects\n", c);
+                       }
                }
 
                if (process_global_keys(cui, c))
@@ -927,6 +932,11 @@ static int cui_server_wait(void *arg)
        } else {
                nc_scr_status_printf(cui->current, "Info: Connected to server!");
                talloc_steal(cui, cui->client);
+
+               if (cui->has_input) {
+                       pb_log("Aborting default boot on server connect\n");
+                       discover_client_cancel_default(cui->client);
+               }
        }
 
        return 0;