wsd/DocumentBroker.cpp | 2 + wsd/LOOLWSD.cpp | 53 +++++++++++-------------------------------------- 2 files changed, 14 insertions(+), 41 deletions(-)
New commits: commit 087f9930402c49d2f26bfab6ce1bb10012e33faa Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Tue Jan 10 00:26:24 2017 -0500 wsd: use refactored createNewClientSession Change-Id: I7d9128865eea6c5fd9f48b469fb35ede3c811b4b Reviewed-on: https://gerrit.libreoffice.org/33123 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index cb20b14..4348e86 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -960,6 +960,8 @@ bool DocumentBroker::startDestroy(const std::string& id) // Last view going away, can destroy. _markToDestroy = (_sessions.size() <= 1); + LOG_DBG("startDestroy on session [" << id << "] on docKey [" << _docKey << + "], markToDestroy: " << _markToDestroy << ", lastEditableSession: " << _lastEditableSession); return _lastEditableSession; } diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index 5cc6b2c..ca03df2 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -833,8 +833,12 @@ private: auto docBroker = findOrCreateDocBroker(docKey, ws, id, uriPublic); if (docBroker) { - // Process the request in an exception-safe way. - processGetRequest(uri, ws, id, uriPublic, docBroker, isReadOnly); + auto session = createNewClientSession(uri, ws, id, uriPublic, docBroker, isReadOnly); + if (session) + { + // Process the request in an exception-safe way. + processGetRequest(uri, ws, id, docBroker, session); + } } } catch (const WebSocketErrorMessageException& exc) @@ -1105,47 +1109,14 @@ private: } /// Process GET requests. - static void processGetRequest(const std::string& uri, std::shared_ptr<LOOLWebSocket>& ws, const std::string& id, - const Poco::URI& uriPublic, const std::shared_ptr<DocumentBroker>& docBroker, const bool isReadOnly) + static void processGetRequest(const std::string& uri, + std::shared_ptr<LOOLWebSocket>& ws, + const std::string& id, + const std::shared_ptr<DocumentBroker>& docBroker, + const std::shared_ptr<ClientSession>& session) { LOG_CHECK_RET(docBroker && "Null docBroker instance", ); const auto docKey = docBroker->getDocKey(); - - std::shared_ptr<ClientSession> session; - try - { - // In case of WOPI, if this session is not set as readonly, it might be set so - // later after making a call to WOPI host which tells us the permission on files - // (UserCanWrite param). - session = std::make_shared<ClientSession>(id, ws, docBroker, uriPublic, isReadOnly); - - // Now we have a DocumentBroker and we're ready to process client commands. - const std::string statusReady = "statusindicator: ready"; - LOG_TRC("Sending to Client [" << statusReady << "]."); - ws->sendFrame(statusReady.data(), statusReady.size()); - - const std::string fs = FileUtil::checkDiskSpaceOnRegisteredFileSystems(); - if (!fs.empty()) - { - LOG_WRN("File system of [" << fs << "] is dangerously low on disk space."); - const std::string diskfullMsg = "error: cmd=internal kind=diskfull"; - // Alert the session currently being opened - ws->sendFrame(diskfullMsg.data(), diskfullMsg.size()); - // Alert all other existing sessions also - Util::alertAllUsers(diskfullMsg); - } - - LOOLWSD::dumpEventTrace(docBroker->getJailId(), id, "NewSession: " + uri); - docBroker->addSession(session); - } - catch (const std::exception& exc) - { - LOG_WRN("Exception while preparing session [" << id << "]."); - removeDocBrokerSession(docBroker, id); - - return; - } - LOG_CHECK_RET(session && "Null ClientSession instance", ); try { @@ -1159,7 +1130,7 @@ private: []() { return TerminationFlag || SigUtil::isShuttingDown(); }); // Connection terminated. Destroy session. - LOG_DBG("Client session [" << id << "] terminated. Cleaning up."); + LOG_DBG("Client session [" << id << "] on docKey [" << docKey << "] terminated. Cleaning up."); auto docLock = docBroker->getLock(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits