common/Session.hpp     |   12 ++++++
 kit/ChildSession.cpp   |   96 ++++++++++++++++++++++++-------------------------
 kit/Kit.cpp            |   10 ++---
 wsd/ClientSession.cpp  |   44 +++++++++++-----------
 wsd/DocumentBroker.cpp |    6 +--
 5 files changed, 90 insertions(+), 78 deletions(-)

New commits:
commit 120000347e511889087dd8550b256bc6363d22a6
Author:     Jan Holesovsky <ke...@collabora.com>
AuthorDate: Mon Mar 30 11:59:20 2020 +0200
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Tue Mar 31 20:15:25 2020 +0200

    Log every error we send to the JS.
    
    So that it is easy to find it in the log.
    
    Change-Id: I1b367db9e97d7215c46e824998e99048531acb07
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/91413
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/common/Session.hpp b/common/Session.hpp
index dbf75ad2f..ec99f5e29 100644
--- a/common/Session.hpp
+++ b/common/Session.hpp
@@ -116,6 +116,18 @@ public:
         return (buffer != nullptr ? sendTextFrame(buffer, std::strlen(buffer)) 
: false);
     }
 
+    bool sendTextFrameAndLogError(const std::string& text)
+    {
+        LOG_ERR(text);
+        return sendTextFrame(text.data(), text.size());
+    }
+
+    bool sendTextFrameAndLogError(const char* buffer)
+    {
+        LOG_ERR(buffer);
+        return (buffer != nullptr ? sendTextFrame(buffer, std::strlen(buffer)) 
: false);
+    }
+
     virtual void handleMessage(const std::vector<char> &data) override;
 
     /// Invoked when we want to disconnect a session.
diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp
index e5a76f060..2f2f1c20a 100644
--- a/kit/ChildSession.cpp
+++ b/kit/ChildSession.cpp
@@ -200,14 +200,14 @@ bool ChildSession::_handleInput(const char *buffer, int 
length)
     {
         if (_isDocLoaded)
         {
-            sendTextFrame("error: cmd=load kind=docalreadyloaded");
+            sendTextFrameAndLogError("error: cmd=load kind=docalreadyloaded");
             return false;
         }
 
         _isDocLoaded = loadDocument(buffer, length, tokens);
         if (!_isDocLoaded)
         {
-            sendTextFrame("error: cmd=load kind=faileddocloading");
+            sendTextFrameAndLogError("error: cmd=load kind=faileddocloading");
         }
 
         LOG_TRC("isDocLoaded state after loadDocument: " << _isDocLoaded << 
'.');
@@ -215,7 +215,7 @@ bool ChildSession::_handleInput(const char *buffer, int 
length)
     }
     else if (!_isDocLoaded)
     {
-        sendTextFrame("error: cmd=" + tokens[0] + " kind=nodocloaded");
+        sendTextFrameAndLogError("error: cmd=" + tokens[0] + " 
kind=nodocloaded");
         return false;
     }
     else if (tokens.equals(0, "renderfont"))
@@ -496,14 +496,14 @@ bool ChildSession::uploadSignedDocument(const char* 
buffer, int length, const St
 
     if (filetype.empty() || filename.empty() || wopiUrl.empty() || 
token.empty())
     {
-        sendTextFrame("error: cmd=uploadsigneddocument kind=syntax");
+        sendTextFrameAndLogError("error: cmd=uploadsigneddocument 
kind=syntax");
         return false;
     }
 
     std::string mimetype = getMimeFromFileType(filetype);
     if (mimetype.empty())
     {
-        sendTextFrame("error: cmd=uploadsigneddocument kind=syntax");
+        sendTextFrameAndLogError("error: cmd=uploadsigneddocument 
kind=syntax");
         return false;
     }
     const std::string tmpDir = FileUtil::createRandomDir(JAILED_DOCUMENT_ROOT);
@@ -563,7 +563,7 @@ bool ChildSession::uploadSignedDocument(const char* buffer, 
int length, const St
         {
             LOG_ERR("Upload signed document HTTP Response Error: " << 
response.getStatus() << ' ' << response.getReason());
 
-            sendTextFrame("error: cmd=uploadsigneddocument kind=httpresponse");
+            sendTextFrameAndLogError("error: cmd=uploadsigneddocument 
kind=httpresponse");
 
             return false;
         }
@@ -572,7 +572,7 @@ bool ChildSession::uploadSignedDocument(const char* buffer, 
int length, const St
     {
         LOG_ERR("Upload signed document Exception: " + 
pocoException.displayText());
 
-        sendTextFrame("error: cmd=uploadsigneddocument kind=failure");
+        sendTextFrameAndLogError("error: cmd=uploadsigneddocument 
kind=failure");
 
         return false;
     }
@@ -587,7 +587,7 @@ bool ChildSession::loadDocument(const char * /*buffer*/, 
int /*length*/, const S
     int part = -1;
     if (tokens.size() < 2)
     {
-        sendTextFrame("error: cmd=load kind=syntax");
+        sendTextFrameAndLogError("error: cmd=load kind=syntax");
         return false;
     }
 
@@ -672,7 +672,7 @@ bool ChildSession::sendFontRendering(const char* 
/*buffer*/, int /*length*/, con
     if (tokens.size() < 3 ||
         !getTokenString(tokens[1], "font", font))
     {
-        sendTextFrame("error: cmd=renderfont kind=syntax");
+        sendTextFrameAndLogError("error: cmd=renderfont kind=syntax");
         return false;
     }
 
@@ -686,7 +686,7 @@ bool ChildSession::sendFontRendering(const char* 
/*buffer*/, int /*length*/, con
     catch (Poco::SyntaxException& exc)
     {
         LOG_DBG(exc.message());
-        sendTextFrame("error: cmd=renderfont kind=syntax");
+        sendTextFrameAndLogError("error: cmd=renderfont kind=syntax");
         return false;
     }
 
@@ -722,7 +722,7 @@ bool ChildSession::sendFontRendering(const char* 
/*buffer*/, int /*length*/, con
     }
     else
     {
-        bSuccess = sendTextFrame("error: cmd=renderfont kind=failure");
+        bSuccess = sendTextFrameAndLogError("error: cmd=renderfont 
kind=failure");
     }
 
     std::free(ptrFont);
@@ -785,7 +785,7 @@ bool ChildSession::getCommandValues(const char* /*buffer*/, 
int /*length*/, cons
     std::string command;
     if (tokens.size() != 2 || !getTokenString(tokens[1], "command", command))
     {
-        sendTextFrame("error: cmd=commandvalues kind=syntax");
+        sendTextFrameAndLogError("error: cmd=commandvalues kind=syntax");
         return false;
     }
 
@@ -827,7 +827,7 @@ bool ChildSession::clientZoom(const char* /*buffer*/, int 
/*length*/, const Stri
         !getTokenInteger(tokens[3], "tiletwipwidth", tileTwipWidth) ||
         !getTokenInteger(tokens[4], "tiletwipheight", tileTwipHeight))
     {
-        sendTextFrame("error: cmd=clientzoom kind=syntax");
+        sendTextFrameAndLogError("error: cmd=clientzoom kind=syntax");
         return false;
     }
 
@@ -850,7 +850,7 @@ bool ChildSession::clientVisibleArea(const char* 
/*buffer*/, int /*length*/, con
         !getTokenInteger(tokens[3], "width", width) ||
         !getTokenInteger(tokens[4], "height", height))
     {
-        sendTextFrame("error: cmd=clientvisiblearea kind=syntax");
+        sendTextFrameAndLogError("error: cmd=clientvisiblearea kind=syntax");
         return false;
     }
 
@@ -873,7 +873,7 @@ bool ChildSession::outlineState(const char* /*buffer*/, int 
/*length*/, const St
         !getTokenString(tokens[4], "state", state) ||
         (state != "visible" && state != "hidden"))
     {
-        sendTextFrame("error: cmd=outlinestate kind=syntax");
+        sendTextFrameAndLogError("error: cmd=outlinestate kind=syntax");
         return false;
     }
 
@@ -894,7 +894,7 @@ bool ChildSession::downloadAs(const char* /*buffer*/, int 
/*length*/, const Stri
         !getTokenString(tokens[1], "name", name) ||
         !getTokenString(tokens[2], "id", id))
     {
-        sendTextFrame("error: cmd=downloadas kind=syntax");
+        sendTextFrameAndLogError("error: cmd=downloadas kind=syntax");
         return false;
     }
 
@@ -985,7 +985,7 @@ bool ChildSession::getTextSelection(const char* /*buffer*/, 
int /*length*/, cons
     if (tokens.size() != 2 ||
         !getTokenString(tokens[1], "mimetype", mimeType))
     {
-        sendTextFrame("error: cmd=gettextselection kind=syntax");
+        sendTextFrameAndLogError("error: cmd=gettextselection kind=syntax");
         return false;
     }
 
@@ -1125,7 +1125,7 @@ bool ChildSession::paste(const char* buffer, int length, 
const StringVector& tok
     if (tokens.size() < 2 || !getTokenString(tokens[1], "mimetype", mimeType) 
||
         mimeType.empty())
     {
-        sendTextFrame("error: cmd=paste kind=syntax");
+        sendTextFrameAndLogError("error: cmd=paste kind=syntax");
         return false;
     }
 
@@ -1172,7 +1172,7 @@ bool ChildSession::insertFile(const char* /*buffer*/, int 
/*length*/, const Stri
         !getTokenString(tokens[1], "name", name) ||
         !getTokenString(tokens[2], "type", type))
     {
-        sendTextFrame("error: cmd=insertfile kind=syntax");
+        sendTextFrameAndLogError("error: cmd=insertfile kind=syntax");
         return false;
     }
 #else
@@ -1182,7 +1182,7 @@ bool ChildSession::insertFile(const char* /*buffer*/, int 
/*length*/, const Stri
         !getTokenString(tokens[2], "type", type) ||
         !getTokenString(tokens[3], "data", data))
     {
-        sendTextFrame("error: cmd=insertfile kind=syntax");
+        sendTextFrameAndLogError("error: cmd=insertfile kind=syntax");
         return false;
     }
 #endif
@@ -1237,7 +1237,7 @@ bool ChildSession::extTextInputEvent(const char* 
/*buffer*/, int /*length*/,
         !getTokenString(tokens[3], "text", text))
 
     {
-        sendTextFrame("error: cmd=" + std::string(tokens[0]) + " kind=syntax");
+        sendTextFrameAndLogError("error: cmd=" + std::string(tokens[0]) + " 
kind=syntax");
         return false;
     }
 
@@ -1264,7 +1264,7 @@ bool ChildSession::keyEvent(const char* /*buffer*/, int 
/*length*/,
             !getTokenUInt32(tokens[counter++], "id", winId))
         {
             LOG_ERR("Window key event expects a valid id= attribute");
-            sendTextFrame("error: cmd=" + std::string(tokens[0]) + " 
kind=syntax");
+            sendTextFrameAndLogError("error: cmd=" + std::string(tokens[0]) + 
" kind=syntax");
             return false;
         }
         else // id= attribute is found
@@ -1278,7 +1278,7 @@ bool ChildSession::keyEvent(const char* /*buffer*/, int 
/*length*/,
         !getTokenInteger(tokens[counter++], "char", charcode) ||
         !getTokenInteger(tokens[counter++], "key", keycode))
     {
-        sendTextFrame("error: cmd=" + std::string(tokens[0]) + "  
kind=syntax");
+        sendTextFrameAndLogError("error: cmd=" + std::string(tokens[0]) + "  
kind=syntax");
         return false;
     }
 
@@ -1333,7 +1333,7 @@ bool ChildSession::gestureEvent(const char* /*buffer*/, 
int /*length*/,
 
     if (!success)
     {
-        sendTextFrame("error: cmd=" +  std::string(tokens[0]) + " 
kind=syntax");
+        sendTextFrameAndLogError("error: cmd=" +  std::string(tokens[0]) + " 
kind=syntax");
         return false;
     }
 
@@ -1393,7 +1393,7 @@ bool ChildSession::mouseEvent(const char* /*buffer*/, int 
/*length*/,
 
     if (!success)
     {
-        sendTextFrame("error: cmd=" +  std::string(tokens[0]) + " 
kind=syntax");
+        sendTextFrameAndLogError("error: cmd=" +  std::string(tokens[0]) + " 
kind=syntax");
         return false;
     }
 
@@ -1417,7 +1417,7 @@ bool ChildSession::dialogEvent(const char* /*buffer*/, 
int /*length*/, const Str
 {
     if (tokens.size() <= 2)
     {
-        sendTextFrame("error: cmd=dialogevent kind=syntax");
+        sendTextFrameAndLogError("error: cmd=dialogevent kind=syntax");
         return false;
     }
 
@@ -1437,7 +1437,7 @@ bool ChildSession::completeFunction(const char* 
/*buffer*/, int /*length*/, cons
     if (tokens.size() != 2 ||
         !getTokenInteger(tokens[1], "index", index))
     {
-        sendTextFrame("error: cmd=completefunction kind=syntax");
+        sendTextFrameAndLogError("error: cmd=completefunction kind=syntax");
         return false;
     }
 
@@ -1451,7 +1451,7 @@ bool ChildSession::unoCommand(const char* /*buffer*/, int 
/*length*/, const Stri
 {
     if (tokens.size() <= 1)
     {
-        sendTextFrame("error: cmd=uno kind=syntax");
+        sendTextFrameAndLogError("error: cmd=uno kind=syntax");
         return false;
     }
 
@@ -1518,7 +1518,7 @@ bool ChildSession::selectText(const char* /*buffer*/, int 
/*length*/,
             !getTokenInteger(tokens[2], "x", x) ||
             !getTokenInteger(tokens[3], "y", y))
         {
-            sendTextFrame("error: cmd=selecttext kind=syntax");
+            sendTextFrameAndLogError("error: cmd=selecttext kind=syntax");
             return false;
         }
     }
@@ -1773,7 +1773,7 @@ bool ChildSession::exportSignAndUploadDocument(const 
char* buffer, int length, c
         {
             if (!rChainPtr.isString())
             {
-                sendTextFrame("error: cmd=exportsignanduploaddocument 
kind=syntax");
+                sendTextFrameAndLogError("error: 
cmd=exportsignanduploaddocument kind=syntax");
                 return false;
             }
             std::string chainCertificate = rChainPtr;
@@ -1783,14 +1783,14 @@ bool ChildSession::exportSignAndUploadDocument(const 
char* buffer, int length, c
 
     if (filetype.empty() || filename.empty() || wopiUrl.empty() || 
token.empty() || x509Certificate.empty() || privateKey.empty())
     {
-        sendTextFrame("error: cmd=exportsignanduploaddocument kind=syntax");
+        sendTextFrameAndLogError("error: cmd=exportsignanduploaddocument 
kind=syntax");
         return false;
     }
 
     std::string mimetype = getMimeFromFileType(filetype);
     if (mimetype.empty())
     {
-        sendTextFrame("error: cmd=exportsignanduploaddocument kind=syntax");
+        sendTextFrameAndLogError("error: cmd=exportsignanduploaddocument 
kind=syntax");
         return false;
     }
 
@@ -1805,7 +1805,7 @@ bool ChildSession::exportSignAndUploadDocument(const 
char* buffer, int length, c
 
         if (!bResult)
         {
-            sendTextFrame("error: cmd=exportsignanduploaddocument 
kind=syntax");
+            sendTextFrameAndLogError("error: cmd=exportsignanduploaddocument 
kind=syntax");
             return false;
         }
     }
@@ -1828,7 +1828,7 @@ bool ChildSession::exportSignAndUploadDocument(const 
char* buffer, int length, c
 
         if (!bResult)
         {
-            sendTextFrame("error: cmd=exportsignanduploaddocument 
kind=syntax");
+            sendTextFrameAndLogError("error: cmd=exportsignanduploaddocument 
kind=syntax");
             return false;
         }
     }
@@ -1883,7 +1883,7 @@ bool ChildSession::exportSignAndUploadDocument(const 
char* buffer, int length, c
         {
             LOG_ERR("Upload signed document HTTP Response Error: " << 
response.getStatus() << ' ' << response.getReason());
 
-            sendTextFrame("error: cmd=exportsignanduploaddocument 
kind=httpresponse");
+            sendTextFrameAndLogError("error: cmd=exportsignanduploaddocument 
kind=httpresponse");
 
             return false;
         }
@@ -1892,7 +1892,7 @@ bool ChildSession::exportSignAndUploadDocument(const 
char* buffer, int length, c
     {
         LOG_ERR("Upload signed document Exception: " + 
pocoException.displayText());
 
-        sendTextFrame("error: cmd=exportsignanduploaddocument kind=failure");
+        sendTextFrameAndLogError("error: cmd=exportsignanduploaddocument 
kind=failure");
 
         return false;
     }
@@ -1952,7 +1952,7 @@ bool ChildSession::selectGraphic(const char* /*buffer*/, 
int /*length*/, const S
         !getTokenInteger(tokens[2], "x", x) ||
         !getTokenInteger(tokens[3], "y", y))
     {
-        sendTextFrame("error: cmd=selectgraphic kind=syntax");
+        sendTextFrameAndLogError("error: cmd=selectgraphic kind=syntax");
         return false;
     }
 
@@ -1967,7 +1967,7 @@ bool ChildSession::resetSelection(const char* /*buffer*/, 
int /*length*/, const
 {
     if (tokens.size() != 1)
     {
-        sendTextFrame("error: cmd=resetselection kind=syntax");
+        sendTextFrameAndLogError("error: cmd=resetselection kind=syntax");
         return false;
     }
 
@@ -1985,7 +1985,7 @@ bool ChildSession::saveAs(const char* /*buffer*/, int 
/*length*/, const StringVe
     if (tokens.size() <= 1 ||
         !getTokenString(tokens[1], "url", url))
     {
-        sendTextFrame("error: cmd=saveas kind=syntax");
+        sendTextFrameAndLogError("error: cmd=saveas kind=syntax");
         return false;
     }
 
@@ -1998,7 +1998,7 @@ bool ChildSession::saveAs(const char* /*buffer*/, int 
/*length*/, const StringVe
 
         if (pathSegments.size() == 0)
         {
-            sendTextFrame("error: cmd=saveas kind=syntax");
+            sendTextFrameAndLogError("error: cmd=saveas kind=syntax");
             return false;
         }
 
@@ -2071,7 +2071,7 @@ bool ChildSession::saveAs(const char* /*buffer*/, int 
/*length*/, const StringVe
     if (success)
         sendTextFrame("saveas: url=" + encodedURL + " filename=" + 
encodedWopiFilename);
     else
-        sendTextFrame("error: cmd=storage kind=savefailed");
+        sendTextFrameAndLogError("error: cmd=storage kind=savefailed");
 
     return true;
 }
@@ -2082,7 +2082,7 @@ bool ChildSession::setClientPart(const char* /*buffer*/, 
int /*length*/, const S
     if (tokens.size() < 2 ||
         !getTokenInteger(tokens[1], "part", part))
     {
-        sendTextFrame("error: cmd=setclientpart kind=invalid");
+        sendTextFrameAndLogError("error: cmd=setclientpart kind=invalid");
         return false;
     }
 
@@ -2104,7 +2104,7 @@ bool ChildSession::selectClientPart(const char* 
/*buffer*/, int /*length*/, cons
         !getTokenInteger(tokens[1], "part", nPart) ||
         !getTokenInteger(tokens[2], "how", nSelect))
     {
-        sendTextFrame("error: cmd=selectclientpart kind=invalid");
+        sendTextFrameAndLogError("error: cmd=selectclientpart kind=invalid");
         return false;
     }
 
@@ -2136,7 +2136,7 @@ bool ChildSession::moveSelectedClientParts(const char* 
/*buffer*/, int /*length*
     if (tokens.size() < 2 ||
         !getTokenInteger(tokens[1], "position", nPosition))
     {
-        sendTextFrame("error: cmd=moveselectedclientparts kind=invalid");
+        sendTextFrameAndLogError("error: cmd=moveselectedclientparts 
kind=invalid");
         return false;
     }
 
@@ -2165,7 +2165,7 @@ bool ChildSession::setPage(const char* /*buffer*/, int 
/*length*/, const StringV
     if (tokens.size() < 2 ||
         !getTokenInteger(tokens[1], "page", page))
     {
-        sendTextFrame("error: cmd=setpage kind=invalid");
+        sendTextFrameAndLogError("error: cmd=setpage kind=invalid");
         return false;
     }
 
@@ -2182,7 +2182,7 @@ bool ChildSession::renderShapeSelection(const char* 
/*buffer*/, int /*length*/,
         !getTokenString(tokens[1], "mimetype", mimeType) ||
         mimeType != "image/svg+xml")
     {
-        sendTextFrame("error: cmd=rendershapeselection kind=syntax");
+        sendTextFrameAndLogError("error: cmd=rendershapeselection 
kind=syntax");
         return false;
     }
 
@@ -2220,7 +2220,7 @@ bool ChildSession::removeTextContext(const char* 
/*buffer*/, int /*length*/,
         !getTokenInteger(tokens[2], "before", before) ||
         !getTokenInteger(tokens[3], "after", after))
     {
-        sendTextFrame("error: cmd=" + std::string(tokens[0]) + " kind=syntax");
+        sendTextFrameAndLogError("error: cmd=" + std::string(tokens[0]) + " 
kind=syntax");
         return false;
     }
 
@@ -2443,7 +2443,7 @@ void ChildSession::loKitCallback(const int type, const 
std::string& payload)
             Poco::Dynamic::Var var = parser.parse(payload);
             Object::Ptr object = var.extract<Object::Ptr>();
 
-            sendTextFrame("error: cmd=" + object->get("cmd").toString() +
+            sendTextFrameAndLogError("error: cmd=" + 
object->get("cmd").toString() +
                     " kind=" + object->get("kind").toString() + " code=" + 
object->get("code").toString());
         }
         break;
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 3a3121b43..f647f1e8f 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -1085,7 +1085,7 @@ public:
                                                        pixmapWidth, 
pixmapHeight, *data, mode))
                         {
                             // FIXME: Return error.
-                            // sendTextFrame("error: cmd=tile kind=failure");
+                            // sendTextFrameAndLogError("error: cmd=tile 
kind=failure");
                             LOG_ERR("Failed to encode tile into PNG.");
                             return;
                         }
@@ -1665,12 +1665,12 @@ private:
                             passwordFrame += "to-view";
                         else if (_docPasswordType == PasswordType::ToModify)
                             passwordFrame += "to-modify";
-                        session->sendTextFrame("error: cmd=load kind=" + 
passwordFrame);
+                        session->sendTextFrameAndLogError("error: cmd=load 
kind=" + passwordFrame);
                     }
                     else
                     {
                         LOG_INF("Wrong password for password-protected 
document [" << uriAnonym << "].");
-                        session->sendTextFrame("error: cmd=load 
kind=wrongpassword");
+                        session->sendTextFrameAndLogError("error: cmd=load 
kind=wrongpassword");
                     }
                 }
 
@@ -1695,12 +1695,12 @@ private:
                         passwordFrame += "to-view";
                     else if (_docPasswordType == PasswordType::ToModify)
                         passwordFrame += "to-modify";
-                    session->sendTextFrame("error: cmd=load kind=" + 
passwordFrame);
+                    session->sendTextFrameAndLogError("error: cmd=load kind=" 
+ passwordFrame);
                     return nullptr;
                 }
                 else if (docPassword != _docPassword)
                 {
-                    session->sendTextFrame("error: cmd=load 
kind=wrongpassword");
+                    session->sendTextFrameAndLogError("error: cmd=load 
kind=wrongpassword");
                     return nullptr;
                 }
             }
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index f336eeec0..ddb7f605b 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -328,7 +328,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
 
     if (tokens.size() < 1)
     {
-        sendTextFrame("error: cmd=empty kind=unknown");
+        sendTextFrameAndLogError("error: cmd=empty kind=unknown");
         return false;
     }
 
@@ -344,7 +344,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
     {
         if (tokens.size() < 2)
         {
-            sendTextFrame("error: cmd=loolclient kind=badprotocolversion");
+            sendTextFrameAndLogError("error: cmd=loolclient 
kind=badprotocolversion");
             return false;
         }
 
@@ -352,7 +352,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
         if (std::get<0>(versionTuple) != ProtocolMajorVersionNumber ||
             std::get<1>(versionTuple) != ProtocolMinorVersionNumber)
         {
-            sendTextFrame("error: cmd=loolclient kind=badprotocolversion");
+            sendTextFrameAndLogError("error: cmd=loolclient 
kind=badprotocolversion");
             return false;
         }
 
@@ -375,7 +375,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
     {
         if (getDocURL() != "")
         {
-            sendTextFrame("error: cmd=load kind=docalreadyloaded");
+            sendTextFrameAndLogError("error: cmd=load kind=docalreadyloaded");
             return false;
         }
 
@@ -437,12 +437,12 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
              tokens[0] != "completefunction")
     {
         LOG_ERR("Session [" << getId() << "] got unknown command [" << 
tokens[0] << "].");
-        sendTextFrame("error: cmd=" + tokens[0] + " kind=unknown");
+        sendTextFrameAndLogError("error: cmd=" + tokens[0] + " kind=unknown");
         return false;
     }
     else if (getDocURL() == "")
     {
-        sendTextFrame("error: cmd=" + tokens[0] + " kind=nodocloaded");
+        sendTextFrameAndLogError("error: cmd=" + tokens[0] + " 
kind=nodocloaded");
         return false;
     }
     else if (tokens.equals(0, "canceltiles"))
@@ -568,7 +568,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
             !getTokenInteger(tokens[4], "height", height))
         {
             // Be forgiving and log instead of disconnecting.
-            // sendTextFrame("error: cmd=clientvisiblearea kind=syntax");
+            // sendTextFrameAndLogError("error: cmd=clientvisiblearea 
kind=syntax");
             LOG_WRN("Invalid syntax for '" << tokens[0] << "' message: [" << 
firstLine << "].");
             return true;
         }
@@ -587,7 +587,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
             if (tokens.size() != 2 ||
                 !getTokenInteger(tokens[1], "part", temp))
             {
-                sendTextFrame("error: cmd=setclientpart kind=syntax");
+                sendTextFrameAndLogError("error: cmd=setclientpart 
kind=syntax");
                 return false;
             }
             else
@@ -608,7 +608,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
                 !getTokenInteger(tokens[1], "part", part) ||
                 !getTokenInteger(tokens[2], "how", how))
             {
-                sendTextFrame("error: cmd=selectclientpart kind=syntax");
+                sendTextFrameAndLogError("error: cmd=selectclientpart 
kind=syntax");
                 return false;
             }
             else
@@ -625,7 +625,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
             if (tokens.size() != 2 ||
                 !getTokenInteger(tokens[1], "position", nPosition))
             {
-                sendTextFrame("error: cmd=moveselectedclientparts 
kind=syntax");
+                sendTextFrameAndLogError("error: cmd=moveselectedclientparts 
kind=syntax");
                 return false;
             }
             else
@@ -644,7 +644,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
             !getTokenInteger(tokens[4], "tiletwipheight", tileTwipHeight))
         {
             // Be forgiving and log instead of disconnecting.
-            // sendTextFrame("error: cmd=clientzoom kind=syntax");
+            // sendTextFrameAndLogError("error: cmd=clientzoom kind=syntax");
             LOG_WRN("Invalid syntax for '" << tokens[0] << "' message: [" << 
firstLine << "].");
             return true;
         }
@@ -665,7 +665,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
             !getTokenString(tokens[1], "tile", tileID))
         {
             // Be forgiving and log instead of disconnecting.
-            // sendTextFrame("error: cmd=tileprocessed kind=syntax");
+            // sendTextFrameAndLogError("error: cmd=tileprocessed 
kind=syntax");
             LOG_WRN("Invalid syntax for '" << tokens[0] << "' message: [" << 
firstLine << "].");
             return true;
         }
@@ -700,7 +700,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
         if (tokens.size() < 2 || !getTokenString(tokens[1], "filename", 
encodedWopiFilename))
         {
             LOG_ERR("Bad syntax for: " << firstLine);
-            sendTextFrame("error: cmd=renamefile kind=syntax");
+            sendTextFrameAndLogError("error: cmd=renamefile kind=syntax");
             return false;
         }
         std::string wopiFilename;
@@ -757,7 +757,7 @@ bool ClientSession::loadDocument(const char* /*buffer*/, 
int /*length*/,
     if (tokens.size() < 2)
     {
         // Failed loading ends connection.
-        sendTextFrame("error: cmd=load kind=syntax");
+        sendTextFrameAndLogError("error: cmd=load kind=syntax");
         return false;
     }
 
@@ -836,7 +836,7 @@ bool ClientSession::loadDocument(const char* /*buffer*/, 
int /*length*/,
     }
     catch (const Poco::SyntaxException&)
     {
-        sendTextFrame("error: cmd=load kind=uriinvalid");
+        sendTextFrameAndLogError("error: cmd=load kind=uriinvalid");
     }
 
     return false;
@@ -847,7 +847,7 @@ bool ClientSession::getCommandValues(const char *buffer, 
int length, const Strin
 {
     std::string command;
     if (tokens.size() != 2 || !getTokenString(tokens[1], "command", command))
-        return sendTextFrame("error: cmd=commandvalues kind=syntax");
+        return sendTextFrameAndLogError("error: cmd=commandvalues 
kind=syntax");
 
     std::string cmdValues;
     if (docBroker->tileCache().getTextStream(TileCache::StreamType::CmdValues, 
command, cmdValues))
@@ -863,7 +863,7 @@ bool ClientSession::sendFontRendering(const char *buffer, 
int length, const Stri
     if (tokens.size() < 2 ||
         !getTokenString(tokens[1], "font", font))
     {
-        return sendTextFrame("error: cmd=renderfont kind=syntax");
+        return sendTextFrameAndLogError("error: cmd=renderfont kind=syntax");
     }
 
     getTokenString(tokens[2], "char", text);
@@ -890,7 +890,7 @@ bool ClientSession::sendTile(const char * /*buffer*/, int 
/*length*/, const Stri
     catch (const std::exception& exc)
     {
         LOG_ERR("Failed to process tile command: " << exc.what());
-        return sendTextFrame("error: cmd=tile kind=invalid");
+        return sendTextFrameAndLogError("error: cmd=tile kind=invalid");
     }
 
     return true;
@@ -909,7 +909,7 @@ bool ClientSession::sendCombinedTiles(const char* 
/*buffer*/, int /*length*/, co
     {
         LOG_ERR("Failed to process tilecombine command: " << exc.what());
         // Be forgiving and log instead of disconnecting.
-        // return sendTextFrame("error: cmd=tile kind=invalid");
+        // return sendTextFrameAndLogError("error: cmd=tile kind=invalid");
     }
 
     return true;
@@ -1180,7 +1180,7 @@ bool ClientSession::handleKitToClientMessage(const char* 
buffer, const int lengt
             // the session
             if (!isConvertTo)
             {
-                sendTextFrame("error: cmd=saveas kind=syntax");
+                sendTextFrameAndLogError("error: cmd=saveas kind=syntax");
                 return false;
             }
         }
@@ -1189,7 +1189,7 @@ bool ClientSession::handleKitToClientMessage(const char* 
buffer, const int lengt
         if (!isConvertTo && !getTokenString(tokens[2], "filename", 
encodedWopiFilename))
         {
             LOG_ERR("Bad syntax for: " << firstLine);
-            sendTextFrame("error: cmd=saveas kind=syntax");
+            sendTextFrameAndLogError("error: cmd=saveas kind=syntax");
             return false;
         }
 
@@ -1235,7 +1235,7 @@ bool ClientSession::handleKitToClientMessage(const char* 
buffer, const int lengt
                 docBroker->saveAsToStorage(getId(), resultURL.getPath(), 
wopiFilename, false);
             }
             else
-                sendTextFrame("error: cmd=storage kind=savefailed");
+                sendTextFrameAndLogError("error: cmd=storage kind=savefailed");
         }
         else
         {
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 4aa52622e..0c28b94bd 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -967,7 +967,7 @@ bool DocumentBroker::saveToStorageInternal(const 
std::string& sessionId, bool su
     if (!success && !force)
     {
         LOG_ERR("Cannot store docKey [" << _docKey << "] as .uno:Save has 
failed in LOK.");
-        it->second->sendTextFrame("error: cmd=storage kind=savefailed");
+        it->second->sendTextFrameAndLogError("error: cmd=storage 
kind=savefailed");
         return false;
     }
 
@@ -1080,14 +1080,14 @@ bool DocumentBroker::saveToStorageInternal(const 
std::string& sessionId, bool su
         // Make everyone readonly and tell everyone that storage is low on 
diskspace.
         for (const auto& sessionIt : _sessions)
         {
-            sessionIt.second->sendTextFrame("error: cmd=storage 
kind=savediskfull");
+            sessionIt.second->sendTextFrameAndLogError("error: cmd=storage 
kind=savediskfull");
         }
     }
     else if (storageSaveResult.getResult() == 
StorageBase::SaveResult::UNAUTHORIZED)
     {
         LOG_ERR("Cannot save docKey [" << _docKey << "] to storage URI [" << 
uriAnonym <<
                 "]. Invalid or expired access token. Notifying client.");
-        it->second->sendTextFrame("error: cmd=storage kind=saveunauthorized");
+        it->second->sendTextFrameAndLogError("error: cmd=storage 
kind=saveunauthorized");
     }
     else if (storageSaveResult.getResult() == StorageBase::SaveResult::FAILED)
     {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to