[Libreoffice-commits] online.git: loolwsd/LOOLBroker.cpp loolwsd/LOOLWSD.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Mon Jan 4 17:13:28 PST 2016
loolwsd/LOOLBroker.cpp | 2 +-
loolwsd/LOOLWSD.cpp | 27 ++++++++++++++++++++-------
2 files changed, 21 insertions(+), 8 deletions(-)
New commits:
commit 2104712b72c5cb1545acc3ea47d59e40341f0cbd
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Mon Jan 4 13:59:50 2016 -0500
loolwsd: exception handling in wsd queue handler
Change-Id: I66f1990a20151c67346922273a98ecc5a91dc58f
Reviewed-on: https://gerrit.libreoffice.org/21096
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/loolwsd/LOOLBroker.cpp b/loolwsd/LOOLBroker.cpp
index 75a3395..2c4c819 100644
--- a/loolwsd/LOOLBroker.cpp
+++ b/loolwsd/LOOLBroker.cpp
@@ -656,7 +656,7 @@ int main(int argc, char** argv)
}
//TODO: Why not use our PID?
- const std::string childId = Util::encodeId(Util::rng::getNext());
+ const std::string childId = std::to_string(Util::rng::getNext());
const Path jailPath = Path::forDirectory(childRoot + Path::separator() + childId);
Log::info("Jail path: " + jailPath.toString());
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index e41ec2a..a9c7756 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -167,20 +167,33 @@ public:
void run() override
{
- static const std::string thread_name = "wsd_queue_handler";
+ static const std::string thread_name = "wsd_queue";
#ifdef __linux
if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0)
Log::error("Cannot set thread name to " + thread_name + ".");
#endif
Log::debug("Thread [" + thread_name + "] started.");
- while (true)
+ try
+ {
+ while (true)
+ {
+ const std::string input = _queue.get();
+ if (input == "eof")
+ break;
+ if (!_session->handleInput(input.c_str(), input.size()))
+ break;
+ }
+ }
+ catch (const std::exception& exc)
+ {
+ Log::error(std::string("Exception: ") + exc.what());
+ raise(SIGABRT);
+ }
+ catch (...)
{
- const std::string input = _queue.get();
- if (input == "eof")
- break;
- if (!_session->handleInput(input.c_str(), input.size()))
- break;
+ Log::error("Unexpected Exception.");
+ raise(SIGABRT);
}
Log::debug("Thread [" + thread_name + "] finished.");
More information about the Libreoffice-commits
mailing list