[Libreoffice-commits] online.git: loolwsd/LOOLKit.cpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Sun Oct 16 22:09:20 UTC 2016


 loolwsd/LOOLKit.cpp |   22 +---------------------
 1 file changed, 1 insertion(+), 21 deletions(-)

New commits:
commit 4ca15894dfb2cdbe0d25dd033f7eb90144a8ae73
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Fri Oct 14 23:04:12 2016 -0400

    loolwsd: only forkit cleans up the jail directory
    
    No need to do a partial cleanup in the kit
    when forkit recycles the disk. This avoid
    both programatic errors (as the comments in
    the removed code explains) as well as hammering
    the disk from multiple processes.
    
    By leaving all disk cleanup to forkit we
    guarantee safety and that only one process
    does disk cleanup, and sequentially at that.
    
    N.B. Kit processes are still responsible for
    setting up the jail and the LO binaries etc.
    So disk IO is not strictly sequential from a
    single process.
    
    Change-Id: Ia6768ab87df71a83a6676c3d52da3d6797f717fc
    Reviewed-on: https://gerrit.libreoffice.org/29944
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp
index 172da5c..94e5a5a 100644
--- a/loolwsd/LOOLKit.cpp
+++ b/loolwsd/LOOLKit.cpp
@@ -1548,27 +1548,7 @@ void lokit_main(const std::string& childRoot,
                     return TerminationFlag.load();
                 });
 
-        // Clean up jail if we created one
-        if (bRunInsideJail && !jailPath.isRelative())
-        {
-            // In theory we should here do Util::removeFile("/", true), because we are inside the
-            // chroot jail, and all of it can be removed now when we are exiting. (At least the root
-            // of the chroot jail probably would not be removed even if we tried, so we still would
-            // need to complete the cleanup in loolforkit.)
-
-            // But: It is way too risky to actually do that (effectively, "rm -rf /") as it would
-            // trash a developer's machine if something goes wrong while hacking and debugging and
-            // the process isn't in a chroot after all when it comes here.
-
-            // So just remove what we can reasonably safely assume won't exist as global pathnames
-            // on a developer's machine, loSubpath (typically "/lo") and JAILED_DOCUMENT_ROOT
-            // ("/user/docs/").
-
-            Log::info("Removing '/" + loSubPath + "'");
-            Util::removeFile("/" + loSubPath, true);
-            Log::info("Removing '" + std::string(JAILED_DOCUMENT_ROOT) + "'");
-            Util::removeFile(std::string(JAILED_DOCUMENT_ROOT), true);
-        }
+        // Let forkit handle the jail cleanup.
     }
     catch (const Exception& exc)
     {


More information about the Libreoffice-commits mailing list