test/integration-http-server.cpp | 2 +- wsd/LOOLWSD.cpp | 39 +++++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 19 deletions(-)
New commits: commit 25dee367d43d12b924dea75e702cdfa20252b97d Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sun Mar 26 00:43:43 2017 -0400 wsd: load the convert-to doc in callback Since this a fake session that doesn't have a client socket, we push the messages directly into the ClientSession. But since the DocBroker poll thread will probably not be ready by then, there is no child process and the other document bits needed to load (or indeed process any client messages). So we defer all the fake messages in a poll callback to insure they are done in the correct order. Change-Id: Id81dc4288b305829149e6e9c81d0f7da719c59ad Reviewed-on: https://gerrit.libreoffice.org/35712 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/test/integration-http-server.cpp b/test/integration-http-server.cpp index 5db9c9a5..3530ed57 100644 --- a/test/integration-http-server.cpp +++ b/test/integration-http-server.cpp @@ -44,7 +44,7 @@ class HTTPServerTest : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testLoleafletPost); CPPUNIT_TEST(testScriptsAndLinksGet); CPPUNIT_TEST(testScriptsAndLinksPost); - // CPPUNIT_TEST(testConvertTo); + CPPUNIT_TEST(testConvertTo); CPPUNIT_TEST_SUITE_END(); diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index 4bb13ffc..eaa02fcb 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -1943,24 +1943,27 @@ private: docBroker->startThread(); - // Load the document manually and request saving in the target format. - std::string encodedFrom; - URI::encode(docBroker->getPublicUri().getPath(), "", encodedFrom); - const std::string load = "load url=" + encodedFrom; - std::vector<char> loadRequest(load.begin(), load.end()); - clientSession->handleMessage(true, WebSocketHandler::WSOpCode::Text, loadRequest); - - // FIXME: Check for security violations. - Path toPath(docBroker->getPublicUri().getPath()); - toPath.setExtension(format); - const std::string toJailURL = "file://" + std::string(JAILED_DOCUMENT_ROOT) + toPath.getFileName(); - std::string encodedTo; - URI::encode(toJailURL, "", encodedTo); - - // Convert it to the requested format. - const auto saveas = "saveas url=" + encodedTo + " format=" + format + " options="; - std::vector<char> saveasRequest(saveas.begin(), saveas.end()); - clientSession->handleMessage(true, WebSocketHandler::WSOpCode::Text, saveasRequest); + docBroker->addCallback([&]() + { + // Load the document manually and request saving in the target format. + std::string encodedFrom; + URI::encode(docBroker->getPublicUri().getPath(), "", encodedFrom); + const std::string load = "load url=" + encodedFrom; + std::vector<char> loadRequest(load.begin(), load.end()); + clientSession->handleMessage(true, WebSocketHandler::WSOpCode::Text, loadRequest); + + // FIXME: Check for security violations. + Path toPath(docBroker->getPublicUri().getPath()); + toPath.setExtension(format); + const std::string toJailURL = "file://" + std::string(JAILED_DOCUMENT_ROOT) + toPath.getFileName(); + std::string encodedTo; + URI::encode(toJailURL, "", encodedTo); + + // Convert it to the requested format. + const auto saveas = "saveas url=" + encodedTo + " format=" + format + " options="; + std::vector<char> saveasRequest(saveas.begin(), saveas.end()); + clientSession->handleMessage(true, WebSocketHandler::WSOpCode::Text, saveasRequest); + }); sent = true; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits