diff --git a/gns3server/modules/dynamips/dynamips_hypervisor.py b/gns3server/modules/dynamips/dynamips_hypervisor.py index 45e6449b..1ddc4c02 100644 --- a/gns3server/modules/dynamips/dynamips_hypervisor.py +++ b/gns3server/modules/dynamips/dynamips_hypervisor.py @@ -351,8 +351,6 @@ class DynamipsHypervisor(object): socket_type = socket.SOCK_STREAM for port in range(start_port, end_port): - if port + 1 == end_port: - raise DynamipsError("Could not find a free port between {0} and {1}".format(start_port, end_port)) try: if ":" in host: # IPv6 address support @@ -364,7 +362,10 @@ class DynamipsHypervisor(object): return port except OSError as e: if e.errno == errno.EADDRINUSE: # socket already in use - continue + if port + 1 == end_port: + raise DynamipsError("Could not find a free port between {0} and {1}".format(start_port, end_port)) + else: + continue else: raise DynamipsError("Could not find an unused port: {}".format(e)) diff --git a/gns3server/modules/iou/iou_device.py b/gns3server/modules/iou/iou_device.py index 5d0940fb..6a53039d 100644 --- a/gns3server/modules/iou/iou_device.py +++ b/gns3server/modules/iou/iou_device.py @@ -793,8 +793,6 @@ class IOUDevice(object): socket_type = socket.SOCK_STREAM for port in range(start_port, end_port): - if port + 1 == end_port: - raise IOUError("Could not find a free port between {0} and {1}".format(start_port, end_port)) try: if ":" in host: # IPv6 address support @@ -806,6 +804,9 @@ class IOUDevice(object): return port except OSError as e: if e.errno == errno.EADDRINUSE: # socket already in use - continue + if port + 1 == end_port: + raise IOUError("Could not find a free port between {0} and {1}".format(start_port, end_port)) + else: + continue else: raise IOUError("Could not find an unused port: {}".format(e))