mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2024-12-04 14:46:30 -05:00
avoid hitting the mutex's in the signal handler, we could block, which is
not something we want to do. Some mutex implementations are signal based. svn path=/trunk/icecast/; revision=5174
This commit is contained in:
parent
69de4ea61e
commit
9482db6016
@ -41,6 +41,7 @@
|
|||||||
#include "logging.h"
|
#include "logging.h"
|
||||||
#include "xslt.h"
|
#include "xslt.h"
|
||||||
#include "fserve.h"
|
#include "fserve.h"
|
||||||
|
#include "sighandler.h"
|
||||||
|
|
||||||
#include "yp.h"
|
#include "yp.h"
|
||||||
#include "source.h"
|
#include "source.h"
|
||||||
@ -341,7 +342,17 @@ void connection_accept_loop(void)
|
|||||||
|
|
||||||
_build_pool();
|
_build_pool();
|
||||||
|
|
||||||
while (global.running == ICE_RUNNING) {
|
while (global.running == ICE_RUNNING)
|
||||||
|
{
|
||||||
|
if (schedule_config_reread)
|
||||||
|
{
|
||||||
|
/* reread config file */
|
||||||
|
INFO0("Scheduling config reread ...");
|
||||||
|
|
||||||
|
connection_inject_event(EVENT_CONFIG_READ, NULL);
|
||||||
|
schedule_config_reread = 0;
|
||||||
|
}
|
||||||
|
|
||||||
con = _accept_connection();
|
con = _accept_connection();
|
||||||
|
|
||||||
if (con) {
|
if (con) {
|
||||||
|
@ -24,6 +24,8 @@ void _sig_hup(int signo);
|
|||||||
void _sig_die(int signo);
|
void _sig_die(int signo);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int schedule_config_reread = 0;
|
||||||
|
|
||||||
void sighandler_initialize(void)
|
void sighandler_initialize(void)
|
||||||
{
|
{
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
@ -38,18 +40,7 @@ void sighandler_initialize(void)
|
|||||||
|
|
||||||
void _sig_hup(int signo)
|
void _sig_hup(int signo)
|
||||||
{
|
{
|
||||||
/* We do this elsewhere because it's a bad idea to hang around for too
|
schedule_config_reread = 1;
|
||||||
* long re-reading an entire config file inside a signal handler. Bad
|
|
||||||
* practice.
|
|
||||||
*/
|
|
||||||
|
|
||||||
INFO1("Caught signal %d, scheduling config reread ...",
|
|
||||||
signo);
|
|
||||||
|
|
||||||
/* reread config file */
|
|
||||||
|
|
||||||
connection_inject_event(EVENT_CONFIG_READ, NULL);
|
|
||||||
|
|
||||||
/* some OSes require us to reattach the signal handler */
|
/* some OSes require us to reattach the signal handler */
|
||||||
signal(SIGHUP, _sig_hup);
|
signal(SIGHUP, _sig_hup);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef __SIGHANDLER_H__
|
#ifndef __SIGHANDLER_H__
|
||||||
#define __SIGHANDLER_H__
|
#define __SIGHANDLER_H__
|
||||||
|
|
||||||
|
extern int schedule_config_reread;
|
||||||
|
|
||||||
void sighandler_initialize(void);
|
void sighandler_initialize(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user