[Libreoffice-commits] online.git: loolwsd/ChildSession.cpp loolwsd/ChildSession.hpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Sat May 21 16:35:12 UTC 2016
loolwsd/ChildSession.cpp | 37 +++++++++++++++----------------------
loolwsd/ChildSession.hpp | 2 +-
2 files changed, 16 insertions(+), 23 deletions(-)
New commits:
commit 74304fc08ee2cb666824eee4b460b029b81a69de
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat May 21 11:47:13 2016 -0400
loolwsd: ChildSession error propegation and cleanup
Change-Id: I8e5c87b6989fd090c98ca35e2584a7dd6d1c6a60
Reviewed-on: https://gerrit.libreoffice.org/25267
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/loolwsd/ChildSession.cpp b/loolwsd/ChildSession.cpp
index 785f6f2..8587e25 100644
--- a/loolwsd/ChildSession.cpp
+++ b/loolwsd/ChildSession.cpp
@@ -401,13 +401,13 @@ bool ChildSession::_handleInput(const char *buffer, int length)
if (tokens[0] == "dummymsg")
{
- // Just to update the activity of view-only mode
+ // Just to update the activity of a view-only client.
return true;
}
else if (tokens[0] == "canceltiles")
{
- // this command makes sense only on the command queue level, nothing
- // to do here
+ // This command makes sense only on the command queue level.
+ // Shouldn't get this here.
return true;
}
else if (tokens[0] == "commandvalues")
@@ -562,14 +562,14 @@ bool ChildSession::_handleInput(const char *buffer, int length)
// than for WSD to potentially stall while notifying
// each client with the edit lock state.
Log::trace("Echoing back [" + firstLine + "].");
- sendTextFrame(firstLine);
- return true;
+ return sendTextFrame(firstLine);
}
else
{
- assert(false);
+ assert(!"Unknown command token.");
}
}
+
return true;
}
@@ -627,7 +627,7 @@ bool ChildSession::loadDocument(const char * /*buffer*/, int /*length*/, StringT
return true;
}
-void ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
+bool ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
std::string font, decodedFont;
@@ -635,7 +635,7 @@ void ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, Str
!getTokenString(tokens[1], "font", font))
{
sendTextFrame("error: cmd=renderfont kind=syntax");
- return;
+ return false;
}
std::unique_lock<std::recursive_mutex> lock(Mutex);
@@ -652,21 +652,16 @@ void ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, Str
Timestamp timestamp;
int width, height;
- unsigned char *pixmap = _loKitDocument->renderFont(decodedFont.c_str(), &width, &height);
+ std::unique_ptr<unsigned char[]> pixmap(_loKitDocument->renderFont(decodedFont.c_str(), &width, &height));
Log::trace("renderFont [" + font + "] rendered in " + std::to_string(timestamp.elapsed()/1000.) + "ms");
- if (pixmap != nullptr)
+ if (!pixmap ||
+ !png::encodeBufferToPNG(pixmap.get(), width, height, output, LOK_TILEMODE_RGBA))
{
- if (!png::encodeBufferToPNG(pixmap, width, height, output, LOK_TILEMODE_RGBA))
- {
- sendTextFrame("error: cmd=renderfont kind=failure");
- delete[] pixmap;
- return;
- }
- delete[] pixmap;
+ return sendTextFrame("error: cmd=renderfont kind=failure");
}
- sendBinaryFrame(output.data(), output.size());
+ return sendBinaryFrame(output.data(), output.size());
}
bool ChildSession::getStatus(const char* /*buffer*/, int /*length*/)
@@ -683,8 +678,7 @@ bool ChildSession::getStatus(const char* /*buffer*/, int /*length*/)
return false;
}
- sendTextFrame("status: " + status);
- return true;
+ return sendTextFrame("status: " + status);
}
bool ChildSession::getCommandValues(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
@@ -701,8 +695,7 @@ bool ChildSession::getCommandValues(const char* /*buffer*/, int /*length*/, Stri
if (_multiView)
_loKitDocument->setView(_viewId);
- sendTextFrame("commandvalues: " + std::string(_loKitDocument->getCommandValues(command.c_str())));
- return true;
+ return sendTextFrame("commandvalues: " + std::string(_loKitDocument->getCommandValues(command.c_str())));
}
bool ChildSession::getPartPageRectangles(const char* /*buffer*/, int /*length*/)
diff --git a/loolwsd/ChildSession.hpp b/loolwsd/ChildSession.hpp
index a0e42d9..aa17be8 100644
--- a/loolwsd/ChildSession.hpp
+++ b/loolwsd/ChildSession.hpp
@@ -59,7 +59,7 @@ public:
protected:
bool loadDocument(const char *buffer, int length, Poco::StringTokenizer& tokens);
- void sendFontRendering(const char *buffer, int length, Poco::StringTokenizer& tokens);
+ bool sendFontRendering(const char *buffer, int length, Poco::StringTokenizer& tokens);
bool getCommandValues(const char *buffer, int length, Poco::StringTokenizer& tokens);
bool clientZoom(const char *buffer, int length, Poco::StringTokenizer& tokens);
More information about the Libreoffice-commits
mailing list