[Libreoffice-commits] online.git: loolwsd/LOOLBroker.cpp loolwsd/LOOLWSD.cpp
Henry Castro
hcastro at collabora.com
Tue Dec 29 17:00:58 PST 2015
loolwsd/LOOLBroker.cpp | 15 ++++++++++-----
loolwsd/LOOLWSD.cpp | 2 ++
2 files changed, 12 insertions(+), 5 deletions(-)
New commits:
commit 33a7f6adbb204208f64d95b38a28055773b1db59
Author: Henry Castro <hcastro at collabora.com>
Date: Tue Dec 29 20:59:17 2015 -0400
loolwsd: close pipes
diff --git a/loolwsd/LOOLBroker.cpp b/loolwsd/LOOLBroker.cpp
index 34343cb..7cdbf26 100644
--- a/loolwsd/LOOLBroker.cpp
+++ b/loolwsd/LOOLBroker.cpp
@@ -418,12 +418,10 @@ public:
#endif
Log::debug("Thread [" + thread_name + "] started.");
- while (true)
+ while (!TerminationFlag)
{
if ( pStart == pEnd )
{
- (void)poll(&aPoll,1,-1);
-
if (poll(&aPoll, 1, -1) < 0)
{
Log::error("Failed to poll pipe [" + FIFO_FILE + "].");
@@ -558,6 +556,8 @@ static int createLibreOfficeKit(const bool sharePages, const std::string& loSubP
if ( (nFIFOWriter = open(pipe.c_str(), O_WRONLY)) < 0 )
{
+ // TODO. ill process state, that state should force close prison websockets and
+ // kill, currently we have only "stop server state".
Log::error("Error: failed to open pipe [" + pipe + "] write only. Abandoning child.");
Poco::Process::requestTermination(child);
return -1;
@@ -808,8 +808,7 @@ int main(int argc, char** argv)
aPipe.start(pipeHandler);
- Log::info("loolbroker ready!");
-
+ Log::info("loolbroker is ready.");
unsigned timeoutCounter = 0;
while (!TerminationFlag && !_childProcesses.empty())
@@ -823,6 +822,7 @@ int main(int argc, char** argv)
if ((WIFEXITED(status) || WIFSIGNALED(status) || WTERMSIG(status) ) )
{
Log::error("Child [" + std::to_string(pid) + "] processes died.");
+
forkMutex.lock();
_childProcesses.erase(pid);
_cacheURL.clear();
@@ -873,8 +873,13 @@ int main(int argc, char** argv)
{
Log::info("Requesting child process " + std::to_string(i.first) + " to terminate.");
Process::requestTermination(i.first);
+ close(i.second);
}
+ aPipe.join();
+ close(readerChild);
+ close(readerBroker);
+
Log::info("Process [loolbroker] finished.");
return 0;
}
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index d8989f2..ce391ad 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -997,6 +997,8 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
if (LOOLWSD::doTest)
inputThread.join();
+ close(BrokerWritePipe);
+
// stop the service, no more request
srv.stop();
srv2.stop();
More information about the Libreoffice-commits
mailing list