projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
afs: Use nonblocking API for server commands.
[paraslash.git]
/
audiod.c
diff --git
a/audiod.c
b/audiod.c
index cc4164fead07425382e539f90261dead037c6279..012f6344e7120f2cc4e17992d0719252a51ed0cd 100644
(file)
--- a/
audiod.c
+++ b/
audiod.c
@@
-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);
}
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;
- s
t->signum = para_next_signal(
);
- switch (s
t->s
ignum) {
+ s
ignum = para_next_signal(&s->rfds
);
+ switch (signum) {
case SIGINT:
case SIGTERM:
case SIGHUP:
case SIGINT:
case SIGTERM:
case SIGHUP:
- PARA_EMERG_LOG("terminating on signal %d\n", s
t->s
ignum);
+ PARA_EMERG_LOG("terminating on signal %d\n", signum);
clean_exit(EXIT_FAILURE, "caught deadly signal");
}
}
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;
}
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();
if (ret < 0)
PARA_ERROR_LOG("%s\n", para_strerror(-ret));
audiod_status_dump();
@@
-1152,7
+1147,9
@@
static void status_pre_select(struct sched *s, struct task *t)
ret = btr_node_status(st->btrn, 0, BTR_NT_LEAF);
if (ret > 0)
goto min_delay;
ret = btr_node_status(st->btrn, 0, BTR_NT_LEAF);
if (ret > 0)
goto min_delay;
- if (!st->ct)
+ if (st->ct && audiod_status == AUDIOD_OFF)
+ goto min_delay;
+ if (!st->ct && audiod_status != AUDIOD_OFF)
sched_request_barrier_or_min_delay(&st->restart_barrier, s);
if (cafn >= 0)
sched_request_barrier(&afi[cafn].restart_barrier, s);
sched_request_barrier_or_min_delay(&st->restart_barrier, s);
if (cafn >= 0)
sched_request_barrier(&afi[cafn].restart_barrier, s);