[Libreoffice-commits] online.git: loolwsd/LOOLWSD.cpp loolwsd/LOOLWSD.hpp
Henry Castro
hcastro at collabora.com
Wed Nov 25 18:36:49 PST 2015
loolwsd/LOOLWSD.cpp | 27 +++++++++++++++++++++++++++
loolwsd/LOOLWSD.hpp | 3 +++
2 files changed, 30 insertions(+)
New commits:
commit 0417b90eeb9f05f1606a9d2d3d553db055c66bbb
Author: Henry Castro <hcastro at collabora.com>
Date: Wed Nov 25 22:37:08 2015 -0400
loolwsd: add signal handler
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 0ff4915..7ee8694 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -602,6 +602,27 @@ LOOLWSD::~LOOLWSD()
{
}
+void LOOLWSD::handleSignal(int aSignal)
+{
+ std::cout << Util::logPrefix() << "Signal received: " << strsignal(aSignal) << std::endl;
+}
+
+void LOOLWSD::setSignals(bool isIgnored)
+{
+#ifdef __linux
+ struct sigaction aSigAction;
+
+ sigemptyset(&aSigAction.sa_mask);
+ aSigAction.sa_flags = 0;
+ aSigAction.sa_handler = (isIgnored ? SIG_IGN : handleSignal);
+
+ sigaction(SIGTERM, &aSigAction, NULL);
+ sigaction(SIGINT, &aSigAction, NULL);
+ sigaction(SIGQUIT, &aSigAction, NULL);
+ sigaction(SIGHUP, &aSigAction, NULL);
+#endif
+}
+
void LOOLWSD::initialize(Application& self)
{
ServerApplication::initialize(self);
@@ -891,6 +912,8 @@ void LOOLWSD::componentMain()
#ifdef __linux
if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>("libreofficekit"), 0, 0, 0) != 0)
std::cout << Util::logPrefix() << "Cannot set thread name :" << strerror(errno) << std::endl;
+
+ setSignals(true);
#endif
try
@@ -1007,6 +1030,8 @@ void LOOLWSD::desktopMain()
#ifdef __linux
if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>("loolbroker"), 0, 0, 0) != 0)
std::cout << Util::logPrefix() << "Cannot set thread name :" << strerror(errno) << std::endl;
+
+ setSignals(false);
#endif
// Initialization
@@ -1184,6 +1209,8 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
char *locale = setlocale(LC_ALL, NULL);
if (locale == NULL || std::strcmp(locale, "C") == 0)
setlocale(LC_ALL, "en_US.utf8");
+
+ setSignals(false);
#endif
if (access(cache.c_str(), R_OK | W_OK | X_OK) != 0)
diff --git a/loolwsd/LOOLWSD.hpp b/loolwsd/LOOLWSD.hpp
index f0a3aec..2e63038 100644
--- a/loolwsd/LOOLWSD.hpp
+++ b/loolwsd/LOOLWSD.hpp
@@ -53,6 +53,9 @@ public:
static const std::string LOKIT_PIDLOG;
protected:
+ static void setSignals(bool bIgnore);
+ static void handleSignal(int nSignal);
+
void initialize(Poco::Util::Application& self) override;
void uninitialize() override;
void defineOptions(Poco::Util::OptionSet& options) override;
More information about the Libreoffice-commits
mailing list