* - dccp: \ref dccp_recv.c, \ref dccp_send.c,
* - Audio file selector: \ref afs.c, \ref aft.c, \ref mood.c,
* - Afs structures: \ref afs_table, \ref audio_file_data,
- * \ref afs_info \ref audio_format_info,
+ * \ref afs_info \ref afh_info,
* - Afs tables: \ref aft.c, \ref mood.c, \ref playlist.c,
* \ref attribute.c, \ref score.c,
* - The virtual streaming system: \ref vss.c, \ref chunk_queue.c.
int ret = 0;
signal_pipe = para_signal_init();
- PARA_NOTICE_LOG("%s", "setting up signal handlers\n");
+
+ PARA_NOTICE_LOG("setting up signal handlers\n");
ret += para_install_sighandler(SIGINT);
ret += para_install_sighandler(SIGTERM);
ret += para_install_sighandler(SIGHUP);
PARA_EMERG_LOG("%s", "could not install signal handlers\n");
exit(EXIT_FAILURE);
}
+ add_close_on_fork_list(signal_pipe);
}
static unsigned init_network(void)
ret = mark_fd_nonblock(fd);
if (ret < 0)
goto err;
+ add_close_on_fork_list(fd); /* child doesn't need the listener */
return fd;
err:
PARA_EMERG_LOG("%s\n", PARA_STRERROR(-ret));
}
alarm(ALARM_TIMEOUT);
close_listed_fds();
- close(sockfd); /* child doesn't need the listener */
+ para_signal_shutdown();
/*
* put info on who we are serving into argv[0] to make
* client ip visible in top/ps