X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=audiod.c;h=9ed319f4c27ab7e202082552f1a0ffa9328fe60f;hp=6afb15ef74effcc3ffb31be401e7340d2252635a;hb=d80f5d3ac72591069728fd786d9a0fd96ccfd06f;hpb=32a078f2f75bcd26cccd17418c901c3b2c85b1cc diff --git a/audiod.c b/audiod.c index 6afb15ef..9ed319f4 100644 --- a/audiod.c +++ b/audiod.c @@ -1007,7 +1007,7 @@ static int signal_post_select(struct sched *s, __a_unused struct task *t) case SIGINT: case SIGTERM: case SIGHUP: - PARA_EMERG_LOG("terminating on signal %d\n", signum); + PARA_NOTICE_LOG("received signal %d\n", signum); clean_exit(EXIT_FAILURE, "caught deadly signal"); } return 0; @@ -1031,18 +1031,21 @@ static int command_post_select(struct sched *s, struct task *t) int ret; struct command_task *ct = container_of(t, struct command_task, task); static struct timeval last_status_dump; - struct timeval tmp, delay = {0, 500 * 1000}; + struct timeval tmp, delay = {5, 0}; + bool force = false; tv_add(&last_status_dump, &delay, &tmp); if (tv_diff(&tmp, now, NULL) < 0) { - audiod_status_dump(); last_status_dump = *now; + force = true; } ret = handle_connect(ct->fd, &s->rfds); if (ret < 0) PARA_ERROR_LOG("%s\n", para_strerror(-ret)); - audiod_status_dump(); + else if (ret > 0) + force = true; + audiod_status_dump(force); return 0; } @@ -1066,7 +1069,7 @@ static void close_stat_pipe(void) stat_task->offset_seconds = 0; stat_task->vss_status = 0; stat_task->current_audio_format_num = -1; - audiod_status_dump(); + audiod_status_dump(true); } /* avoid busy loop if server is down */ @@ -1136,7 +1139,6 @@ void __noreturn clean_exit(int status, const char *msg) { int i; - PARA_EMERG_LOG("%s\n", msg); if (socket_name) unlink(socket_name); close_stat_pipe(); @@ -1144,6 +1146,7 @@ void __noreturn clean_exit(int status, const char *msg) close_slot(i); audiod_cmdline_parser_free(&conf); close_stat_clients(); + PARA_EMERG_LOG("%s\n", msg); exit(status); } @@ -1228,14 +1231,15 @@ static int status_post_select(struct sched *s, struct task *t) char *buf; size_t sz; int ret; - if (st->ct->task.error < 0) { + + ret = btr_node_status(st->btrn, st->min_iqs, BTR_NT_LEAF); + if (ret < 0) { close_stat_pipe(); goto out; } if (st->ct->status != CL_EXECUTING) goto out; - ret = btr_node_status(st->btrn, st->min_iqs, BTR_NT_LEAF); - if (ret <= 0) { + if (ret == 0) { struct timeval diff; tv_diff(now, &st->last_status_read, &diff); if (diff.tv_sec > 61)