chiark / gitweb /
fishdescriptor: Calculate target_root earlier and pass to _sock_dir
[chiark-utils.git] / fishdescriptor / py / fishdescriptor / fish.py
index 9d2d3c631fbead808ec46e3c5751819606419458..05f89e6324cde04acdbbb0b4f1427e6486dad7dc 100644 (file)
@@ -114,7 +114,7 @@ class Donor():
             if oe.errno != os.errno.ENOENT: raise oe
             return False
 
-    def _sock_dir(d, target_euid):
+    def _sock_dir(d, target_euid, target_root):
         run_dir = '/run/user/%d' % target_euid
         if d._exists(run_dir):
             return run_dir + '/fishdescriptor'
@@ -133,16 +133,16 @@ class Donor():
     def fish(d, fds):
         # -> list of fds in our process
 
+        target_root = '/proc/%d/root' % d.pid
+        if not d._exists(target_root):
+            target_root = ''
+
         euid = d._geteuid()
-        sockdir = d._sock_dir(euid)
+        sockdir = d._sock_dir(euid, target_root)
         d.mkdir(sockdir)
 
         sockname = '%s/%s,%d' % (sockdir, os.uname().nodename, d.pid)
 
-        target_root = '/proc/%d/root' % d.pid
-        if not d._exists(target_root):
-            target_root = ''
-
         our_sockname = target_root + sockname
 
         s = None