[Libreoffice-commits] online.git: 3 commits - loleaflet/dist loleaflet/src loolwsd/.gitignore loolwsd/LOOLWSD.cpp loolwsd/protocol.txt loolwsd/test loolwsd/UserMessages.hpp
Henry Castro
hcastro at collabora.com
Sat Oct 1 15:37:16 UTC 2016
loleaflet/dist/errormessages.js | 1 +
loleaflet/src/control/Control.Dialog.js | 3 ++-
loleaflet/src/core/Socket.js | 11 +++++++++++
loolwsd/.gitignore | 1 +
loolwsd/LOOLWSD.cpp | 20 ++++++--------------
loolwsd/UserMessages.hpp | 4 ++--
loolwsd/protocol.txt | 2 +-
loolwsd/test/httpwserror.cpp | 8 ++++----
8 files changed, 28 insertions(+), 22 deletions(-)
New commits:
commit 97fa8e45f9f5648866fe03dfafac57e4986c9bfd
Author: Henry Castro <hcastro at collabora.com>
Date: Sat Oct 1 11:12:47 2016 -0400
loleaflet: fix error message localization
diff --git a/loleaflet/dist/errormessages.js b/loleaflet/dist/errormessages.js
index dc99714..625f017 100644
--- a/loleaflet/dist/errormessages.js
+++ b/loleaflet/dist/errormessages.js
@@ -1,3 +1,4 @@
exports.wrongwopisrc = _('Wrong WOPISrc, usage: WOPISrc=valid encoded URI, or file_path, usage: file_path=/path/to/doc/');
exports.emptyhosturl = _('The host URL is empty. The loolwsd server is probably misconfigured, please contact the administrator.');
exports.diskfull = _('No disk space left on server, please contact the server administrator to continue.');
+exports.limitreached = _('This development build is limited to %0 documents, and %1 connections - to avoid the impression that it is suitable for deployment in large enterprises. To find out more about deploying and scaling %2 checkout: <br/><a href=\"%3\">%3</a>.');
diff --git a/loleaflet/src/control/Control.Dialog.js b/loleaflet/src/control/Control.Dialog.js
index 9417a8b..41836ae 100644
--- a/loleaflet/src/control/Control.Dialog.js
+++ b/loleaflet/src/control/Control.Dialog.js
@@ -10,7 +10,8 @@ L.Control.Dialog = L.Control.extend({
},
_onError: function (e) {
- if (vex.dialogID > 0) {
+ if (vex.dialogID > 0 && !this._map._fatal) {
+ // TODO. queue message errors and pop-up dialogs
// Close other dialogs before presenting a new one.
vex.close(vex.dialogID);
}
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 0ce132c..c4bb43f 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -201,6 +201,14 @@ L.Socket = L.Class.extend({
}
else if (textMsg.startsWith('error:') && !this._map._docLayer) {
textMsg = textMsg.substring(6);
+ if (command.errorKind === 'limitreached') {
+ this._map._fatal = true;
+ textMsg = errorMessages.limitreached;
+ textMsg = textMsg.replace(/%0/g, command.params[0]);
+ textMsg = textMsg.replace(/%1/g, command.params[1]);
+ textMsg = textMsg.replace(/%2/g, (typeof brandProductName !== 'undefined' ? brandProductName : 'LibreOffice Online'));
+ textMsg = textMsg.replace(/%3/g, (typeof brandProductURL !== 'undefined' ? brandProductURL : 'https://wiki.documentfoundation.org/Development/LibreOffice_Online'));
+ }
this._map.fire('error', {msg: textMsg});
}
else if (textMsg === 'pong' && this._map._docLayer && this._map._docLayer._debug) {
@@ -411,6 +419,9 @@ L.Socket = L.Class.extend({
else if (tokens[i].substring(0, 7) === 'viewid=') {
command.viewid = tokens[i].substring(7);
}
+ else if (tokens[i].substring(0, 7) === 'params=') {
+ command.params = tokens[i].substring(7).split(',');
+ }
}
if (command.tileWidth && command.tileHeight && this._map._docLayer) {
var defaultZoom = this._map.options.zoom;
commit 2a6a5eab2ea0fddb1eb2bd5c51cf453457e91b83
Author: Henry Castro <hcastro at collabora.com>
Date: Sat Oct 1 08:45:08 2016 -0400
loolwsd: error message is localizable
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 1d0d519..a54378a 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -19,12 +19,6 @@
/* Default document used in the start test URI */
#define LOOLWSD_TEST_DOCUMENT_RELATIVE_PATH "test/data/hello-world.odt"
-/* PRODUCT */
-#define LOOLWSD_PRODUCT "LibreOffice Online"
-
-/* PRODUCT URL */
-#define LOOLWSD_URL "https://wiki.documentfoundation.org/Development/LibreOffice_Online"
-
// This is the main source for the loolwsd program. LOOL uses several loolwsd processes: one main
// parent process that listens on the TCP port and accepts connections from LOOL clients, and a
// number of child processes, each which handles a viewing (editing) session for one document.
@@ -185,10 +179,8 @@ namespace {
static inline
void lcl_shutdownLimitReached(WebSocket& ws)
{
- const std::string msg = std::string("error: ") + Poco::format(PAYLOAD_UNAVALABLE_LIMIT_REACHED, MAX_DOCUMENTS, MAX_CONNECTIONS,
- std::string(LOOLWSD_PRODUCT),
- std::string(LOOLWSD_URL),
- std::string(LOOLWSD_URL));
+ const std::string error = Poco::format(PAYLOAD_UNAVALABLE_LIMIT_REACHED, MAX_DOCUMENTS, MAX_CONNECTIONS);
+ const std::string close = Poco::format(SERVICE_UNAVALABLE_LIMIT_REACHED, static_cast<int>(WebSocket::WS_POLICY_VIOLATION));
/* loleaflet sends loolclient, load and partrectangles message immediately
after web socket handshake, so closing web socket fails loading page in
@@ -209,16 +201,16 @@ void lcl_shutdownLimitReached(WebSocket& ws)
ws.receiveFrame(buffer.data(), buffer.capacity(), flags);
if (--handshake == 0)
{
- ws.sendFrame(msg.data(), msg.size());
- ws.shutdown(WebSocket::WS_ENDPOINT_GOING_AWAY, Poco::format(SERVICE_UNAVALABLE_LIMIT_REACHED, MAX_DOCUMENTS, MAX_CONNECTIONS));
+ ws.sendFrame(error.data(), error.size());
+ ws.shutdown(WebSocket::WS_POLICY_VIOLATION, close);
}
}
while ((flags & WebSocket::FRAME_OP_BITMASK) != WebSocket::FRAME_OP_CLOSE);
}
catch (Exception& e)
{
- ws.sendFrame(msg.data(), msg.size());
- ws.shutdown(WebSocket::WS_ENDPOINT_GOING_AWAY, Poco::format(SERVICE_UNAVALABLE_LIMIT_REACHED, MAX_DOCUMENTS, MAX_CONNECTIONS));
+ ws.sendFrame(error.data(), error.size());
+ ws.shutdown(WebSocket::WS_POLICY_VIOLATION, close);
}
}
diff --git a/loolwsd/UserMessages.hpp b/loolwsd/UserMessages.hpp
index 7aa7aa4..36e6ad3 100644
--- a/loolwsd/UserMessages.hpp
+++ b/loolwsd/UserMessages.hpp
@@ -15,8 +15,8 @@
//NOTE: For whatever reason Poco seems to trim the first character.
constexpr auto SERVICE_UNAVALABLE_INTERNAL_ERROR = " Service is unavailable. Please try again later and report to your administrator if the issue persists.";
-constexpr auto SERVICE_UNAVALABLE_LIMIT_REACHED = "This development build is limited to %d documents, and %d connections";
-constexpr auto PAYLOAD_UNAVALABLE_LIMIT_REACHED = "This development build is limited to %d documents, and %d connections - to avoid the impression that it is suitable for deployment in large enterprises. To find out more about deploying and scaling %s checkout: <br/><a href=\"%s\">%s</a>.";
+constexpr auto SERVICE_UNAVALABLE_LIMIT_REACHED = "error: cmd=socket kind=close code=%d";
+constexpr auto PAYLOAD_UNAVALABLE_LIMIT_REACHED = "error: cmd=socket kind=limitreached params=%d,%d";
#endif
diff --git a/loolwsd/protocol.txt b/loolwsd/protocol.txt
index c22babf..65ad0a0 100644
--- a/loolwsd/protocol.txt
+++ b/loolwsd/protocol.txt
@@ -207,7 +207,7 @@ downloadas: jail=<jail directory> dir=<a tmp dir> name=<name> port=<port>
The client should then request http://server:port/jail/dir/name in order to download
the document
-error: cmd=<command> kind=<kind> [code=<error_code>]
+error: cmd=<command> kind=<kind> [code=<error_code>] [params=1,2,3,...,N]
<freeErrorText>
<command> is the command part of the corresponding client->server
diff --git a/loolwsd/test/httpwserror.cpp b/loolwsd/test/httpwserror.cpp
index a7f8385..8e7769d 100644
--- a/loolwsd/test/httpwserror.cpp
+++ b/loolwsd/test/httpwserror.cpp
@@ -102,8 +102,8 @@ void HTTPWSError::testMaxDocuments()
sendTextFrame(socket, "load ");
sendTextFrame(socket, "partpagerectangles ");
statusCode = getErrorCode(socket, message);
- CPPUNIT_ASSERT_EQUAL(static_cast<Poco::UInt16>(Poco::Net::WebSocket::WS_ENDPOINT_GOING_AWAY), statusCode);
- CPPUNIT_ASSERT_MESSAGE("Wrong error message ", message.find("This development build") != std::string::npos);
+ CPPUNIT_ASSERT_EQUAL(static_cast<Poco::UInt16>(Poco::Net::WebSocket::WS_POLICY_VIOLATION), statusCode);
+ CPPUNIT_ASSERT_MESSAGE("Wrong error message ", message.find("error: cmd=socket kind=close") != std::string::npos);
}
catch (const Poco::Exception& exc)
{
@@ -143,8 +143,8 @@ void HTTPWSError::testMaxConnections()
sendTextFrame(socketN, "load ");
sendTextFrame(socketN, "partpagerectangles ");
statusCode = getErrorCode(*socketN, message);
- CPPUNIT_ASSERT_EQUAL(static_cast<Poco::UInt16>(Poco::Net::WebSocket::WS_ENDPOINT_GOING_AWAY), statusCode);
- CPPUNIT_ASSERT_MESSAGE("Wrong error message ", message.find("This development build") != std::string::npos);
+ CPPUNIT_ASSERT_EQUAL(static_cast<Poco::UInt16>(Poco::Net::WebSocket::WS_POLICY_VIOLATION), statusCode);
+ CPPUNIT_ASSERT_MESSAGE("Wrong error message ", message.find("error: cmd=socket kind=close") != std::string::npos);
}
catch (const Poco::Exception& exc)
{
commit ef2a8ee99fe632274d00550bcc5fa47a6e32db9d
Author: Henry Castro <hcastro at collabora.com>
Date: Sat Oct 1 11:19:20 2016 -0400
loolwsd: .gitignore unittest
diff --git a/loolwsd/.gitignore b/loolwsd/.gitignore
index 4cdd66b..d98297b 100644
--- a/loolwsd/.gitignore
+++ b/loolwsd/.gitignore
@@ -55,3 +55,4 @@ looltool
loolstress
loolforkit-nocaps
loadtest
+unittest
More information about the Libreoffice-commits
mailing list