Add REUSE flag to socket when scanning for unused ports.

This commit is contained in:
grossmj 2014-11-01 15:44:18 -06:00
parent 89e80fd74b
commit 4d23c5917c
2 changed files with 5 additions and 3 deletions

View File

@ -58,9 +58,11 @@ def find_unused_port(start_port, end_port, host='127.0.0.1', socket_type="TCP",
if ":" in host: if ":" in host:
# IPv6 address support # IPv6 address support
with socket.socket(socket.AF_INET6, socket_type) as s: with socket.socket(socket.AF_INET6, socket_type) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port)) # the port is available if bind is a success s.bind((host, port)) # the port is available if bind is a success
else: else:
with socket.socket(socket.AF_INET, socket_type) as s: with socket.socket(socket.AF_INET, socket_type) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port)) # the port is available if bind is a success s.bind((host, port)) # the port is available if bind is a success
return port return port
except OSError as e: except OSError as e:

View File

@ -630,8 +630,7 @@ class Qemu(IModule):
paths.append(os.path.join(os.environ["PROGRAMFILES"], "qemu")) paths.append(os.path.join(os.environ["PROGRAMFILES"], "qemu"))
elif sys.platform.startswith("darwin"): elif sys.platform.startswith("darwin"):
# add specific locations on Mac OS X regardless of what's in $PATH # add specific locations on Mac OS X regardless of what's in $PATH
paths.append("/usr/local/bin") paths.extend(["/usr/local/bin", "/opt/local/bin"])
paths.append("/opt/local/bin")
for path in paths: for path in paths:
try: try:
for f in os.listdir(path): for f in os.listdir(path):
@ -639,7 +638,8 @@ class Qemu(IModule):
qemu_path = os.path.join(path, f) qemu_path = os.path.join(path, f)
version = self._get_qemu_version(qemu_path) version = self._get_qemu_version(qemu_path)
qemus.append({"path": qemu_path, "version": version}) qemus.append({"path": qemu_path, "version": version})
except OSError: except (OSError, QemuError) as e:
log.warn("Could not find QEMU version for {}: {}".format(path, e))
continue continue
response = {"server": self._host, response = {"server": self._host,