1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-12-03 13:48:11 +00:00

Use SO_REUSEADDR before calling bind() where missing. Fixes #1289.

This commit is contained in:
grossmj 2018-04-16 16:36:36 +08:00
parent 5c4f6dd3dc
commit dd9c18b9f8
4 changed files with 4 additions and 1 deletions

View File

@ -514,7 +514,7 @@ class BaseNode:
try: try:
yield from self._ubridge_hypervisor.send(command) yield from self._ubridge_hypervisor.send(command)
except UbridgeError as e: except UbridgeError as e:
raise UbridgeError("{}: {}".format(e, self._ubridge_hypervisor.read_stdout())) raise UbridgeError("Error while sending command '{}': {}: {}".format(command, e, self._ubridge_hypervisor.read_stdout()))
@locked_coroutine @locked_coroutine
def _start_ubridge(self): def _start_ubridge(self):

View File

@ -894,6 +894,7 @@ class QemuVM(BaseNode):
af, socktype, proto, _, sa = res af, socktype, proto, _, sa = res
# let the OS find an unused port for the Qemu monitor # let the OS find an unused port for the Qemu monitor
with socket.socket(af, socktype, proto) as sock: with socket.socket(af, socktype, proto) as sock:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(sa) sock.bind(sa)
self._monitor = sock.getsockname()[1] self._monitor = sock.getsockname()[1]
except OSError as e: except OSError as e:

View File

@ -191,6 +191,7 @@ class VirtualBoxGNS3VM(BaseGNS3VM):
try: try:
# get a random port on localhost # get a random port on localhost
with socket.socket() as s: with socket.socket() as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((ip_address, 0)) s.bind((ip_address, 0))
api_port = s.getsockname()[1] api_port = s.getsockname()[1]
except OSError as e: except OSError as e:

View File

@ -62,6 +62,7 @@ class Hypervisor(UBridgeHypervisor):
af, socktype, proto, _, sa = res af, socktype, proto, _, sa = res
# let the OS find an unused port for the uBridge hypervisor # let the OS find an unused port for the uBridge hypervisor
with socket.socket(af, socktype, proto) as sock: with socket.socket(af, socktype, proto) as sock:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(sa) sock.bind(sa)
port = sock.getsockname()[1] port = sock.getsockname()[1]
break break