Merge branch 't/nonblock_api'
[paraslash.git] / audiod.c
index 380e53e0fbae30cf9c949afea6d247d71396eb37..778318cebc2b8958e26b378987a4842c615a237d 100644 (file)
--- a/audiod.c
+++ b/audiod.c
@@ -191,7 +191,7 @@ int get_audio_format_num(const char *name)
  * It has to to take into account that probably the stream was not started at
  * the beginning of the file, that the clock between the server and the client
  * host may differ and that playback of the stream was delayed, e.g. because
- * the prebuffer filter is used in the filter chain of the given slot.
+ * the prebuffer filter is used in the filter configuration of the given slot.
  *
  * If no writer is active in the given slot, or \a slot_num is negative
  * (indicating that para_audiod runs in standby mode), an approximation based
@@ -980,19 +980,16 @@ static void signal_pre_select(struct sched *s, struct task *t)
        para_fd_set(st->fd, &s->rfds, &s->max_fileno);
 }
 
-static void signal_post_select(struct sched *s, struct task *t)
+static void signal_post_select(struct sched *s, __a_unused struct task *t)
 {
-       struct signal_task *st = container_of(t, struct signal_task, task);
-
-       if (!FD_ISSET(st->fd, &s->rfds))
-               return;
+       int signum;
 
-       st->signum = para_next_signal();
-       switch (st->signum) {
+       signum = para_next_signal(&s->rfds);
+       switch (signum) {
        case SIGINT:
        case SIGTERM:
        case SIGHUP:
-               PARA_EMERG_LOG("terminating on signal %d\n", st->signum);
+               PARA_EMERG_LOG("terminating on signal %d\n", signum);
                clean_exit(EXIT_FAILURE, "caught deadly signal");
        }
 }
@@ -1023,9 +1020,7 @@ static void command_post_select(struct sched *s, struct task *t)
                last_status_dump = *now;
        }
 
-       if (!FD_ISSET(ct->fd, &s->rfds))
-               return;
-       ret = handle_connect(ct->fd);
+       ret = handle_connect(ct->fd, &s->rfds);
        if (ret < 0)
                PARA_ERROR_LOG("%s\n", para_strerror(-ret));
        audiod_status_dump();