}
}
-static void signal_setup()
+static void signal_setup(EventLoop *loop)
{
+ g_loop = loop;
+
signal(SIGTERM, signal_handler);
signal(SIGHUP, signal_handler);
}
-static void do_main()
+static void signal_reset()
{
- signal_setup();
+ signal(SIGHUP, SIG_DFL);
+ signal(SIGINT, SIG_DFL);
+
+ g_loop = nullptr;
+}
+
+static void do_main()
+{
EventLoop::RecvData recv_data(nullptr, recv_handler, MEMD_CNT);
EventLoop event_loop;
- g_loop = &event_loop;
- g_loop->init(SOCKET_PATH);
+
+ signal_setup(&event_loop);
+ event_loop.init(SOCKET_PATH);
sd_notify(0, "READY=1");
- g_loop->run(recv_data, CONNECT_TIMEOUT);
+ event_loop.run(recv_data, CONNECT_TIMEOUT);
sd_notify(0, "STOPPING=1");
- g_loop->uninit();
+ event_loop.uninit();
+ signal_reset();
}