sighandler.c 1.19 KB
Newer Older
Jack Moffitt's avatar
Jack Moffitt committed
1 2 3 4 5 6 7 8 9 10 11 12
#include <signal.h>

#include "thread.h"
#include "avl.h"
#include "log.h"
#include "httpp.h"

#include "global.h"
#include "connection.h"
#include "refbuf.h"
#include "client.h"
#include "logging.h"
13
#include "event.h"
Jack Moffitt's avatar
Jack Moffitt committed
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

#include "sighandler.h"

#define CATMODULE "sighandler"

#ifndef _WIN32
void _sig_hup(int signo);
void _sig_die(int signo);
#endif

void sighandler_initialize(void)
{
#ifndef _WIN32
	signal(SIGHUP, _sig_hup);
	signal(SIGINT, _sig_die);
	signal(SIGTERM, _sig_die);
	signal(SIGPIPE, SIG_IGN);
#endif
}

#ifndef _WIN32

void _sig_hup(int signo)
{
38 39 40 41 42 43 44
    /* We do this elsewhere because it's a bad idea to hang around for too
     * long re-reading an entire config file inside a signal handler. Bad
     * practice.
     */

	INFO1("Caught signal %d, scheduling config reread ...", 
            signo);
Jack Moffitt's avatar
Jack Moffitt committed
45 46 47

	/* reread config file */

48 49 50
    connection_inject_event(EVENT_CONFIG_READ, NULL);
    
	/* reopen logfiles (TODO: We don't do this currently) */
Jack Moffitt's avatar
Jack Moffitt committed
51

52
	/* some OSes require us to reattach the signal handler */
Jack Moffitt's avatar
Jack Moffitt committed
53 54 55 56 57 58 59 60 61 62 63 64
	signal(SIGHUP, _sig_hup);
}

void _sig_die(int signo)
{
	INFO1("Caught signal %d, shutting down...", signo);

	/* inform the server to start shutting down */
	global.running = ICE_HALTING;
}

#endif