wsd/LOOLWSD.cpp |   16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

New commits:
commit 5cfef7e76b57f5eb44cd0d973ceb5c2e8902ff5f
Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk>
Date:   Tue Jan 3 00:13:28 2017 -0500

    wsd: construct ClientSession under try
    
    In the rare event that it fails, we will
    cleanup the DocBrokers correctly.
    
    Change-Id: I6f5346c9ec5021bdadc8a01ed389951ca18d07a3
    Reviewed-on: https://gerrit.libreoffice.org/32676
    Reviewed-by: Ashod Nakashian <ashnak...@gmail.com>
    Tested-by: Ashod Nakashian <ashnak...@gmail.com>

diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 13ab14f..024d3f8 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -1010,16 +1010,15 @@ private:
         LOG_CHECK_RET(docBroker && "Null docBroker instance", );
         const auto docKey = docBroker->getDocKey();
 
-        // In case of WOPI and 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)
-        auto session = std::make_shared<ClientSession>(id, ws, docBroker, 
uriPublic, isReadOnly);
-
-        // Above this point exceptions are safe and will auto-cleanup.
-        // Below this, we need to cleanup internal references.
+        std::shared_ptr<ClientSession> session;
         try
         {
-            // Now the bridge between the client and kit process is connected
+            // 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());
@@ -1051,6 +1050,7 @@ private:
             return;
         }
 
+        LOG_CHECK_RET(session && "Null ClientSession instance", );
         try
         {
             // Let messages flow.
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to