loolwsd/LOOLBroker.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
New commits: commit 8469343da1004a71669c406ae4facc7e3ec95ed7 Author: Henry Castro <hcas...@collabora.com> Date: Wed Feb 3 18:34:27 2016 -0400 loolwsd: avoid fork a new child when its exit code is not success diff --git a/loolwsd/LOOLBroker.cpp b/loolwsd/LOOLBroker.cpp index 5776ab9..858009f 100644 --- a/loolwsd/LOOLBroker.cpp +++ b/loolwsd/LOOLBroker.cpp @@ -946,6 +946,7 @@ int main(int argc, char** argv) Log::info("loolbroker is ready."); + int nChildExitCode = Application::EXIT_OK; unsigned timeoutCounter = 0; while (!TerminationFlag) { @@ -955,6 +956,7 @@ int main(int argc, char** argv) { if (WIFEXITED(status)) { + nChildExitCode = Util::getChildStatus(WEXITSTATUS(status)); Log::info() << "Child process [" << pid << "] exited with code: " << WEXITSTATUS(status) << "." << Log::end; @@ -963,6 +965,7 @@ int main(int argc, char** argv) else if (WIFSIGNALED(status)) { + nChildExitCode = Util::getSignalStatus(WEXITSTATUS(status)); std::string fate = "died"; #ifdef WCOREDUMP if (WCOREDUMP(status)) @@ -994,6 +997,7 @@ int main(int argc, char** argv) } pipeHandler.syncChilds(); + timeoutCounter = 0; } else if (pid < 0) { @@ -1006,7 +1010,7 @@ int main(int argc, char** argv) } } - if (forkCounter > 0) + if (forkCounter > 0 && nChildExitCode == Application::EXIT_OK) { std::lock_guard<std::recursive_mutex> lock(forkMutex); @@ -1032,6 +1036,7 @@ int main(int argc, char** argv) if (timeoutCounter++ == INTERVAL_PROBES) { timeoutCounter = 0; + nChildExitCode = Application::EXIT_OK; sleep(MAINTENANCE_INTERVAL); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits