diff --git a/src/rds95.c b/src/rds95.c index 7c5147c..bcc45a6 100644 --- a/src/rds95.c +++ b/src/rds95.c @@ -134,8 +134,20 @@ int main(int argc, char **argv) { pthread_attr_init(&attr); - signal(SIGTERM, stop); - signal(SIGHUP, reload); + struct sigaction sa_hup, sa_term; + + memset(&sa_hup, 0, sizeof(sa_hup)); + sa_hup.sa_handler = reload; + sigemptyset(&sa_hup.sa_mask); + sa_hup.sa_flags = SA_RESTART; + sigaction(SIGHUP, &sa_hup, NULL); + + memset(&sa_term, 0, sizeof(sa_term)); + sa_term.sa_handler = stop; + sigemptyset(&sa_term.sa_mask); + sa_term.sa_flags = SA_RESTART; + sigaction(SIGTERM, &sa_term, NULL); + sigaction(SIGINT, &sa_term, NULL); format.format = PA_SAMPLE_FLOAT32NE; format.channels = config.num_streams;