You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by gs...@apache.org on 2012/03/09 23:17:03 UTC

svn commit: r1299074 - /subversion/trunk/tools/server-side/svnpubsub/svnwcsub.py

Author: gstein
Date: Fri Mar  9 22:17:03 2012
New Revision: 1299074

URL: http://svn.apache.org/viewvc?rev=1299074&view=rev
Log:
The daemonization code resets the umask to 000 to avoid funky parent
process values. We need to set the umask post-daemonization, so that
logic is moved to Daemon.run().

* tools/server-side/svnpubsub/svnwcsub.py:
  (Daemon.__init__): add UMASK param and stash it away.
  (Daemon.run): possibly set the umask of the process
  (handle_options): remove the umask processing
  (main): pass the umask option to the Daemon instance

Modified:
    subversion/trunk/tools/server-side/svnpubsub/svnwcsub.py

Modified: subversion/trunk/tools/server-side/svnpubsub/svnwcsub.py
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/server-side/svnpubsub/svnwcsub.py?rev=1299074&r1=1299073&r2=1299074&view=diff
==============================================================================
--- subversion/trunk/tools/server-side/svnpubsub/svnwcsub.py (original)
+++ subversion/trunk/tools/server-side/svnpubsub/svnwcsub.py Fri Mar  9 22:17:03 2012
@@ -326,9 +326,10 @@ class ReloadableConfig(ConfigParser.Safe
 
 
 class Daemon(daemonize.Daemon):
-    def __init__(self, logfile, pidfile, bdec):
+    def __init__(self, logfile, pidfile, umask, bdec):
         daemonize.Daemon.__init__(self, logfile, pidfile)
 
+        self.umask = umask
         self.bdec = bdec
 
     def setup(self):
@@ -336,7 +337,15 @@ class Daemon(daemonize.Daemon):
         pass
 
     def run(self):
-        # Start the BDEC (on the main thread), then start up twisted
+        # Set the umask in the daemon process. Defaults to 000 for
+        # daemonized processes. Foreground processes simply inherit
+        # the value from the parent process.
+        if self.umask is not None:
+            umask = int(options.umask, 8)
+            os.umask(umask)
+            logging.info('umask set to %03o', umask)
+
+        # Start the BDEC (on the main thread), then start the client
         self.bdec.start()
         run_client(self.bdec)
 
@@ -394,11 +403,6 @@ def handle_options(options):
         logging.info('setting uid %d', uid)
         os.setuid(uid)
 
-    if options.umask:
-        umask = int(options.umask, 8)
-        os.umask(umask)
-        logging.info('umask set to %03o', umask)
-
 
 def main(args):
     parser = optparse.OptionParser(
@@ -438,7 +442,7 @@ def main(args):
 
     # We manage the logfile ourselves (along with possible rotation). The
     # daemon process can just drop stdout/stderr into /dev/null.
-    d = Daemon('/dev/null', options.pidfile, bdec)
+    d = Daemon('/dev/null', options.pidfile, options.umask, bdec)
     if options.daemon:
         # Daemonize the process and call sys.exit() with appropriate code
         d.daemonize_exit()