[Libreoffice-commits] online.git: loolwsd/LOOLKit.cpp
Henry Castro
hcastro at collabora.com
Sun Feb 21 12:01:38 UTC 2016
loolwsd/LOOLKit.cpp | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
New commits:
commit b646fca95d350dcacaf8d698a2bd1becf2b00444
Author: Henry Castro <hcastro at collabora.com>
Date: Sun Feb 21 07:57:58 2016 -0400
loolwsd: add lokit iddle maintenance time out
diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp
index 95a80d4..248813c 100644
--- a/loolwsd/LOOLKit.cpp
+++ b/loolwsd/LOOLKit.cpp
@@ -768,6 +768,7 @@ void lokit_main(const std::string& childRoot,
struct pollfd pollPipeBroker;
ssize_t bytes = -1;
+ int ready = 0;
char buffer[READ_BUFFER_SIZE];
char* start = nullptr;
char* end = nullptr;
@@ -923,7 +924,17 @@ void lokit_main(const std::string& childRoot,
pollPipeBroker.events = POLLIN;
pollPipeBroker.revents = 0;
- if (poll(&pollPipeBroker, 1, POLL_TIMEOUT_MS) < 0)
+ ready = poll(&pollPipeBroker, 1, POLL_TIMEOUT_MS);
+ if (ready == 0)
+ {
+ // time out maintenance
+ for (auto it = _documents.cbegin(); it != _documents.cend(); )
+ {
+ it = (it->second->canDiscard() ? _documents.erase(it) : ++it);
+ }
+ }
+ else
+ if (ready < 0)
{
Log::error("Failed to poll pipe [" + pipe + "].");
continue;
@@ -965,15 +976,16 @@ void lokit_main(const std::string& childRoot,
response = std::to_string(Process::id()) + " ";
Log::trace("Recv: " + message);
+
+ for (auto it = _documents.cbegin(); it != _documents.cend(); )
+ {
+ it = (it->second->canDiscard() ? _documents.erase(it) : ++it);
+ }
+
if (tokens[0] == "query" && tokens.count() > 1)
{
if (tokens[1] == "url")
{
- for (auto it = _documents.cbegin(); it != _documents.cend(); )
- {
- it = (it->second->canDiscard() ? _documents.erase(it) : ++it);
- }
-
if (_documents.empty())
{
response += "empty \r\n";
@@ -1001,7 +1013,7 @@ void lokit_main(const std::string& childRoot,
}
else
{
- response = "bad \r\n";
+ response += "bad \r\n";
}
Log::trace("KitToBroker: " + response);
More information about the Libreoffice-commits
mailing list