make sure to not override an existing file

This commit is contained in:
benoitc 2013-04-23 08:22:01 +02:00
parent 2e2432c91b
commit 8eda51267c

View File

@ -6,6 +6,7 @@
import errno import errno
import os import os
import socket import socket
import stat
import sys import sys
import time import time
@ -26,6 +27,7 @@ class BaseSocket(object):
sock = socket.socket(self.FAMILY, socket.SOCK_STREAM) sock = socket.socket(self.FAMILY, socket.SOCK_STREAM)
else: else:
sock = socket.fromfd(fd, self.FAMILY, socket.SOCK_STREAM) sock = socket.fromfd(fd, self.FAMILY, socket.SOCK_STREAM)
self.sock = self.set_options(sock, bound=(fd is not None)) self.sock = self.set_options(sock, bound=(fd is not None))
def __str__(self, name): def __str__(self, name):
@ -88,9 +90,15 @@ class UnixSocket(BaseSocket):
def __init__(self, addr, conf, log, fd=None): def __init__(self, addr, conf, log, fd=None):
if fd is None: if fd is None:
try: try:
os.remove(addr) st = os.stat(addr)
except OSError: except OSError as e:
pass if e.args[0] != errno.ENOENT:
raise
else:
if stat.S_ISSOCK(st.st_mode):
os.remove(addr)
else:
raise ValueError("%r is not a socket" % addr)
super(UnixSocket, self).__init__(addr, conf, log, fd=fd) super(UnixSocket, self).__init__(addr, conf, log, fd=fd)
def __str__(self): def __str__(self):