return afs_server_socket[0];
}
+__noreturn static void tmp_sigchld_handler(__a_unused int s)
+{
+ PARA_EMERG_LOG("caught early SIGCHLD\n");
+ exit(EXIT_FAILURE);
+}
+
static void server_init(int argc, char **argv)
{
struct server_cmdline_parser_params params = {
PARA_EMERG_LOG("failed to ignore SIGUSR1\n");
exit(EXIT_FAILURE);
}
+ /*
+ * We have to install a SIGCHLD handler before the afs process is being
+ * forked off. Otherwise, para_server does not notice if afs dies before
+ * the SIGCHLD handler has been installed by init_signal_task() below.
+ */
+ if (signal(SIGCHLD, tmp_sigchld_handler) == SIG_ERR) {
+ PARA_EMERG_LOG("failed to install temporary SIGCHLD handler\n");
+ exit(EXIT_FAILURE);
+ }
PARA_NOTICE_LOG("initializing the audio file selector\n");
afs_socket = init_afs();
init_signal_task();