From 85421290c797c59320bf1e9f076f46195115ab92 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Tue, 22 Apr 2014 10:41:59 +0800 Subject: ui/ncurses: only cancel default boot on valid key events We're seeing occasionaly failures to autoboot due to supirious key events (getch() returing -1) on an IPMI console. This change modifies the process_key logic to only abort the default if we see a valid key event. Signed-off-by: Jeremy Kerr --- ui/ncurses/nc-cui.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'ui') diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index 5f56409..7200a81 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -327,10 +327,6 @@ static int cui_process_key(void *arg) assert(cui->current); - if (!cui->has_input) - discover_client_cancel_default(cui->client); - cui->has_input = true; - for (;;) { int c = getch(); @@ -339,6 +335,13 @@ static int cui_process_key(void *arg) if (c == ERR) break; + if (!cui->has_input) { + pb_log("UI input received (key = %d), aborting " + "default boot\n", c); + discover_client_cancel_default(cui->client); + cui->has_input = true; + } + if (process_global_keys(cui, c)) continue; -- cgit v1.2.1