]> arthur.barton.de Git - bup.git/commitdiff
Fall back from mknod() to socket()/bind() on EPERM for SOCK_STREAM.
authorRob Browning <rlb@defaultvalue.org>
Tue, 8 Oct 2013 16:18:00 +0000 (11:18 -0500)
committerRob Browning <rlb@defaultvalue.org>
Tue, 8 Oct 2013 16:18:02 +0000 (11:18 -0500)
Apparently OS X is throwing EPERM for mknod(... SOCK_STREAM), and the
current OS X manpage does state that mknod() requires superuser
privileges.

Thanks to Zoran Zaric <zz@zoranzaric.de> for the report.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/metadata.py

index d1806b5ebf9f5bca61f940bcd9c3a105ee7201f0..742d1d96dec988a2274a17de489d25d8ee69f97f 100644 (file)
@@ -322,7 +322,7 @@ class Metadata:
             try:
                 os.mknod(path, 0600 | stat.S_IFSOCK)
             except OSError, e:
-                if e.errno == errno.EINVAL:
+                if e.errno in (errno.EINVAL, errno.EPERM):
                     s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
                     s.bind(path)
                 else: