mirror of
https://github.com/SChernykh/p2pool.git
synced 2025-03-12 09:29:51 +00:00
Refactored signal handler
Call the same stop() function as regular exit command
This commit is contained in:
parent
d8efb27374
commit
8f93adf7a1
1 changed files with 6 additions and 3 deletions
|
@ -607,6 +607,8 @@ uint32_t p2pool::parse_block_headers_range(const char* data, size_t size)
|
||||||
|
|
||||||
static void on_signal(uv_signal_t* handle, int signum)
|
static void on_signal(uv_signal_t* handle, int signum)
|
||||||
{
|
{
|
||||||
|
p2pool* pool = reinterpret_cast<p2pool*>(handle->data);
|
||||||
|
|
||||||
switch (signum) {
|
switch (signum) {
|
||||||
case SIGHUP:
|
case SIGHUP:
|
||||||
LOGINFO(1, "caught SIGHUP");
|
LOGINFO(1, "caught SIGHUP");
|
||||||
|
@ -634,7 +636,7 @@ static void on_signal(uv_signal_t* handle, int signum)
|
||||||
LOGINFO(1, "stopping");
|
LOGINFO(1, "stopping");
|
||||||
|
|
||||||
uv_signal_stop(handle);
|
uv_signal_stop(handle);
|
||||||
uv_stop(uv_default_loop_checked());
|
pool->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool init_uv_threadpool()
|
static bool init_uv_threadpool()
|
||||||
|
@ -643,7 +645,7 @@ static bool init_uv_threadpool()
|
||||||
return (uv_queue_work(uv_default_loop_checked(), &dummy, [](uv_work_t*) {}, nullptr) == 0);
|
return (uv_queue_work(uv_default_loop_checked(), &dummy, [](uv_work_t*) {}, nullptr) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool init_signals()
|
static bool init_signals(p2pool* pool)
|
||||||
{
|
{
|
||||||
constexpr int signal_names[] = {
|
constexpr int signal_names[] = {
|
||||||
SIGHUP,
|
SIGHUP,
|
||||||
|
@ -661,6 +663,7 @@ static bool init_signals()
|
||||||
|
|
||||||
for (size_t i = 0; i < array_size(signal_names); ++i) {
|
for (size_t i = 0; i < array_size(signal_names); ++i) {
|
||||||
uv_signal_init(uv_default_loop_checked(), &signals[i]);
|
uv_signal_init(uv_default_loop_checked(), &signals[i]);
|
||||||
|
signals[i].data = pool;
|
||||||
const int rc = uv_signal_start(&signals[i], on_signal, signal_names[i]);
|
const int rc = uv_signal_start(&signals[i], on_signal, signal_names[i]);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
LOGERR(1, "failed to initialize signal, error " << rc);
|
LOGERR(1, "failed to initialize signal, error " << rc);
|
||||||
|
@ -689,7 +692,7 @@ int p2pool::run()
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!init_signals()) {
|
if (!init_signals(this)) {
|
||||||
LOGERR(1, "failed to initialize signal handlers");
|
LOGERR(1, "failed to initialize signal handlers");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue