]> arthur.barton.de Git - bup.git/blobdiff - cmd/daemon-cmd.py
README: replace du code example's tab prefix with spaces
[bup.git] / cmd / daemon-cmd.py
index c46f411c25c1956e2ac75de6cc901a998552c32d..ba4b86a50f8917bf697e2a45864cfecb8ddb97ba 100755 (executable)
@@ -1,5 +1,12 @@
-#!/usr/bin/env python
-import sys, getopt, socket, subprocess
+#!/bin/sh
+"""": # -*-python-*-
+bup_python="$(dirname "$0")/bup-python" || exit $?
+exec "$bup_python" "$0" ${1+"$@"}
+"""
+# end of bup preamble
+
+from __future__ import absolute_import
+import sys, getopt, socket, subprocess, fcntl
 from bup import options, path
 from bup.helpers import *
 
@@ -25,7 +32,7 @@ for res in socket.getaddrinfo(host, port, socket.AF_UNSPEC,
     af, socktype, proto, canonname, sa = res
     try:
         s = socket.socket(af, socktype, proto)
-    except socket.error, e:
+    except socket.error as e:
         continue
     try:
         if af == socket.AF_INET6:
@@ -35,7 +42,8 @@ for res in socket.getaddrinfo(host, port, socket.AF_UNSPEC,
         s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
         s.bind(sa)
         s.listen(1)
-    except socket.error, e:
+        fcntl.fcntl(s.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC)
+    except socket.error as e:
         s.close()
         continue
     socks.append(s)
@@ -53,10 +61,11 @@ try:
                 log("Socket accepted connection from %s\n" % (src,))
                 fd1 = os.dup(s.fileno())
                 fd2 = os.dup(s.fileno())
-                sp = subprocess.Popen([path.exe(), 'mux', '--', 'server']
+                s.close()
+                sp = subprocess.Popen([path.exe(), 'mux', '--',
+                                       path.exe(), 'server']
                                       + extra, stdin=fd1, stdout=fd2)
             finally:
-                s.close()
                 os.close(fd1)
                 os.close(fd2)
 finally: