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"
Michael Smith's avatar
Michael Smith committed
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)
{
Michael Smith's avatar
Michael Smith committed
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 */

Michael Smith's avatar
Michael Smith committed
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

Michael Smith's avatar
Michael Smith committed
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