From dc9e1b46e5fba97c6c99b60d63185fd840305187 Mon Sep 17 00:00:00 2001 From: chalith Date: Tue, 31 Oct 2023 17:29:16 +0530 Subject: [PATCH] Introduced terminate control message --- src/hpsh/hpsh.cpp | 18 ++++++++++++++++-- src/hpsh/hpsh.hpp | 2 ++ test/bin/hpsh | Bin 18752 -> 18752 bytes 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/hpsh/hpsh.cpp b/src/hpsh/hpsh.cpp index 50ac92e3..815abedc 100644 --- a/src/hpsh/hpsh.cpp +++ b/src/hpsh/hpsh.cpp @@ -2,6 +2,8 @@ namespace hpsh { + constexpr const char *HPSH_CTR_SH = "sh"; + constexpr const char *HPSH_CTR_TERMINATE = "terminate"; constexpr uint32_t POLL_TIMEOUT = 1000; constexpr uint32_t READ_BUFFER_SIZE = 128 * 1024; @@ -22,7 +24,7 @@ namespace hpsh ctx.hpsh_pid = fork(); if (ctx.hpsh_pid == -1) { - LOG_ERROR << errno << ": Error forking."; + LOG_ERROR << errno << ": Error forking hpfs process."; close(ctx.control_fds[0]); close(ctx.control_fds[1]); return -1; @@ -42,6 +44,7 @@ namespace hpsh std::string fd_str; fd_str.resize(10); snprintf(fd_str.data(), sizeof(fd_str), "%d", ctx.control_fds[0]); + char *argv[] = {(char *)conf::ctx.hpsh_exe_path.data(), fd_str.data(), NULL}; // Just before we execv the hpsh binary, we set user execution user/group if specified in hp config. @@ -78,7 +81,7 @@ namespace hpsh ctx.is_shutting_down = true; if (ctx.hpsh_pid > 0) - kill(ctx.hpsh_pid, SIGTERM); + send_terminate_message(); // Joining consensus processing thread. if (ctx.watcher_thread.joinable()) @@ -138,11 +141,22 @@ namespace hpsh } } + int send_terminate_message() + { + return (write(ctx.control_fds[1], HPSH_CTR_TERMINATE, 10) < 0) ? -1 : 0; + } + int execute(std::string_view id, std::string_view pubkey, std::string_view message) { if (ctx.is_shutting_down) return -1; + if (write(ctx.control_fds[1], HPSH_CTR_SH, 3) < 0) + { + LOG_ERROR << errno << ": Error writing header message to control fd."; + return -1; + } + int child_fds[2]; if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, child_fds) == -1) { diff --git a/src/hpsh/hpsh.hpp b/src/hpsh/hpsh.hpp index 7f902cf2..11a5d7a8 100644 --- a/src/hpsh/hpsh.hpp +++ b/src/hpsh/hpsh.hpp @@ -35,6 +35,8 @@ namespace hpsh int check_hpsh_exited(const bool block); + int send_terminate_message(); + int execute(std::string_view id, std::string_view pubkey, std::string_view message); void response_watcher(); diff --git a/test/bin/hpsh b/test/bin/hpsh index 83eb98762dfb435a71ee8253cf86f28388699370..4a225764dc18d461bf713c00e44f0230069a6910 100755 GIT binary patch delta 2577 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 Sje@LT!+cdU_zo4cY5oI~ksaOu