audiod: avoid busy loop on startup
authorAndre Noll <maan@systemlinux.org>
Mon, 5 Mar 2007 22:41:09 +0000 (23:41 +0100)
committerAndre Noll <maan@systemlinux.org>
Mon, 5 Mar 2007 22:41:09 +0000 (23:41 +0100)
The restart barrier of the status task must be also set in case
client_open() failed. This avoids spamming the log file.

audiod.c

index dbc1e85..5515e52 100644 (file)
--- a/audiod.c
+++ b/audiod.c
@@ -1011,11 +1011,16 @@ void __noreturn clean_exit(int status, const char *msg)
        exit(status);
 }
 
+/* avoid busy loop if server is down */
+static void set_stat_task_restart_barrier(void)
+{
+       struct timeval delay = {5, 0};
+       tv_add(now, &delay, &stat_task->restart_barrier);
+}
 
 static void client_task_event_handler(__a_unused struct task *t)
 {
        int i;
-       struct timeval delay = {1, 0};
 
        if (t->ret == -E_HANDSHAKE_COMPLETE)
                return;
@@ -1023,8 +1028,7 @@ static void client_task_event_handler(__a_unused struct task *t)
        close_stat_pipe();
        if (t->ret != -E_SERVER_EOF)
                stat_task->clock_diff_count = conf.clock_diff_count_arg;
-       /* avoid busy loop if server is down */
-       tv_add(now, &delay, &stat_task->restart_barrier);
+       set_stat_task_restart_barrier();
        FOR_EACH_AUDIO_FORMAT(i)
                afi[i].restart_barrier = stat_task->restart_barrier;
 }
@@ -1053,6 +1057,7 @@ static void status_pre_select(struct sched *s, struct task *t)
                int argc = 2;
                ret = client_open(argc, argv, &st->pcd);
        }
+       set_stat_task_restart_barrier();
        if (ret < 0)
                return;
        st->pcd->task.event_handler = client_task_event_handler;