From 644616b69cec985929743818311082bcb9635019 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Tue, 28 Mar 2017 16:27:09 +0200 Subject: [PATCH] Ensure we start only one ubridge Fix https://github.com/GNS3/gns3-gui/issues/1964 --- gns3server/compute/base_node.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gns3server/compute/base_node.py b/gns3server/compute/base_node.py index b728401b..b536a271 100644 --- a/gns3server/compute/base_node.py +++ b/gns3server/compute/base_node.py @@ -28,7 +28,7 @@ import platform from gns3server.utils.interfaces import interfaces from ..compute.port_manager import PortManager -from ..utils.asyncio import wait_run_in_executor +from ..utils.asyncio import wait_run_in_executor, locked_coroutine from ..utils.asyncio.telnet_server import AsyncioTelnetServer from ..ubridge.hypervisor import Hypervisor from ..ubridge.ubridge_error import UbridgeError @@ -519,12 +519,16 @@ class BaseNode: except UbridgeError as e: raise UbridgeError("{}: {}".format(e, self._ubridge_hypervisor.read_stdout())) - @asyncio.coroutine + @locked_coroutine def _start_ubridge(self): """ Starts uBridge (handles connections to and from this node). """ + # Prevent us to start multiple ubridge + if self._ubridge_hypervisor and self._ubridge_hypervisor.is_running(): + return + if self.ubridge_path is None: raise NodeError("uBridge is not available, path doesn't exist, or you just installed GNS3 and need to restart your user session to refresh user permissions.")