]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[main] Defer password requests to client if daemon unavailable
authorRay Strode <rstrode@redhat.com>
Tue, 26 Jan 2010 06:13:33 +0000 (01:13 -0500)
committerRay Strode <rstrode@redhat.com>
Tue, 26 Jan 2010 06:20:00 +0000 (01:20 -0500)
There are times when plymouthd isn't in a position to ask for
the password (for instance, if the initramfs is about to run
init=/bin/bash or something).  In those cases, any password
requests need to be handled by the client.

src/client/plymouth.c
src/main.c

index 2d4429474f3e7b1c76518b767f87249a7e11c9de..a5209014f515ea70ee7007100b3d4401448b68a2 100644 (file)
@@ -283,6 +283,10 @@ on_password_answer (password_answer_state_t   *answer_state,
           exit_status = 0;
         }
     }
+  else if (answer == NULL)
+    {
+      on_password_answer_failure (answer_state, answer_state->state->client);
+    }
 
   if (WIFSIGNALED (exit_status))
     raise (WTERMSIG (exit_status));
index e3cafc092ca87797f4001b26302532ebada679a6..af956eed9bdee9f7cae8a036ca23c8387de2539c 100644 (file)
@@ -251,8 +251,17 @@ on_ask_for_password (state_t      *state,
                      const char   *prompt,
                      ply_trigger_t *answer)
 {
-  ply_entry_trigger_t *entry_trigger =
-                                  calloc (1, sizeof (ply_entry_trigger_t));
+  ply_entry_trigger_t *entry_trigger;
+
+  /* No splash, client will have to get password
+   */
+  if (state->boot_splash == NULL)
+    {
+      ply_trigger_pull (answer, NULL);
+      return;
+    }
+
+  entry_trigger = calloc (1, sizeof (ply_entry_trigger_t));
   entry_trigger->type = PLY_ENTRY_TRIGGER_TYPE_PASSWORD;
   entry_trigger->prompt = prompt;
   entry_trigger->trigger = answer;
@@ -265,8 +274,9 @@ on_ask_question (state_t      *state,
                  const char   *prompt,
                  ply_trigger_t *answer)
 {
-  ply_entry_trigger_t *entry_trigger =
-                                  calloc (1, sizeof (ply_entry_trigger_t));
+  ply_entry_trigger_t *entry_trigger;
+
+  entry_trigger = calloc (1, sizeof (ply_entry_trigger_t));
   entry_trigger->type = PLY_ENTRY_TRIGGER_TYPE_QUESTION;
   entry_trigger->prompt = prompt;
   entry_trigger->trigger = answer;