[Libreoffice-commits] online.git: wsd/LOOLWSD.cpp
Jan Holesovsky (via logerrit)
logerrit at kemper.freedesktop.org
Wed Nov 20 18:41:20 UTC 2019
wsd/LOOLWSD.cpp | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
New commits:
commit 78e3dd0ae6bf6a60767c22946687b5ea554cafc2
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Nov 20 18:46:19 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Wed Nov 20 19:41:03 2019 +0100
Revert "killpoco: Remove StringTokenizer from LOOLWSD.cpp."
Blind fix - I've seen a report of a problem with a 'Syntax error' caught
around this code. Unfortunately cannot reproduce this myself, but
better to revert for now.
This reverts commit f637f4a75af56ae16116a88730660d018f306131.
Change-Id: I41cfa2a97127c430b2dd8140ad3f20b7f0eb221a
Reviewed-on: https://gerrit.libreoffice.org/83349
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 410769ab6..e7b4f7439 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -92,6 +92,7 @@ using Poco::Net::PartHandler;
#include <Poco/Process.h>
#include <Poco/SAX/InputSource.h>
#include <Poco/StreamCopier.h>
+#include <Poco/StringTokenizer.h>
#include <Poco/TemporaryFile.h>
#include <Poco/URI.h>
#include <Poco/Util/AbstractConfiguration.h>
@@ -161,6 +162,7 @@ using Poco::Net::MessageHeader;
using Poco::Net::NameValueCollection;
using Poco::Path;
using Poco::StreamCopier;
+using Poco::StringTokenizer;
using Poco::TemporaryFile;
using Poco::URI;
using Poco::Util::Application;
@@ -2189,21 +2191,19 @@ private:
}
else
{
- // split by /'s and ?'s
- std::vector<std::string> reqPathTokens(LOOLProtocol::tokenize(request.getURI(), std::regex(R"(\s*[\/\?]\s*)"), /*skipEmpty =*/ true));
-
- if (reqPathTokens.size() > 1 && reqPathTokens[0] == "lool" && reqPathTokens[1] == "clipboard")
+ StringTokenizer reqPathTokens(request.getURI(), "/?", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM);
+ if (reqPathTokens.count() > 1 && reqPathTokens[0] == "lool" && reqPathTokens[1] == "clipboard")
{
// Util::dumpHex(std::cerr, "clipboard:\n", "", socket->getInBuffer()); // lots of data ...
handleClipboardRequest(request, message, disposition);
}
else if (!(request.find("Upgrade") != request.end() && Poco::icompare(request["Upgrade"], "websocket") == 0) &&
- reqPathTokens.size() > 0 && reqPathTokens[0] == "lool")
+ reqPathTokens.count() > 0 && reqPathTokens[0] == "lool")
{
// All post requests have url prefix 'lool'.
handlePostRequest(request, message, disposition);
}
- else if (reqPathTokens.size() > 2 && reqPathTokens[0] == "lool" && reqPathTokens[2] == "ws" &&
+ else if (reqPathTokens.count() > 2 && reqPathTokens[0] == "lool" && reqPathTokens[2] == "ws" &&
request.find("Upgrade") != request.end() && Poco::icompare(request["Upgrade"], "websocket") == 0)
{
std::string decodedUri; // WOPISrc
@@ -2533,8 +2533,8 @@ private:
Poco::Net::HTTPResponse response;
std::shared_ptr<StreamSocket> socket = _socket.lock();
- std::vector<std::string> tokens(LOOLProtocol::tokenize(request.getURI(), std::regex(R"(\s*[\/\?]\s*)")));
- if (tokens.size() > 2 && tokens[2] == "convert-to")
+ StringTokenizer tokens(request.getURI(), "/?");
+ if (tokens.count() > 2 && tokens[2] == "convert-to")
{
// Validate sender - FIXME: should do this even earlier.
if (!allowConvertTo(socket->clientAddress(), request, true))
@@ -2560,7 +2560,7 @@ private:
bool bFullSheetPreview = sFullSheetPreview == "true" ? true : false;
// prefer what is in the URI
- if (tokens.size() > 3)
+ if (tokens.count() > 3)
format = tokens[3];
bool sent = false;
@@ -2660,7 +2660,7 @@ private:
}
return;
}
- else if (tokens.size() >= 4 && tokens[3] == "insertfile")
+ else if (tokens.count() >= 4 && tokens[3] == "insertfile")
{
LOG_INF("Insert file request.");
@@ -2701,7 +2701,7 @@ private:
}
}
}
- else if (tokens.size() >= 6)
+ else if (tokens.count() >= 6)
{
LOG_INF("File download request.");
// TODO: Check that the user in question has access to this file!
More information about the Libreoffice-commits
mailing list