From 28f7c2a1cd126fd77c1ca62d2ce13a7de9a6f588 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Tue, 10 May 2016 11:38:50 +0200 Subject: [PATCH] Ensure in all cases the docker console is closed before restart Fix https://github.com/GNS3/gns3-gui/issues/1226 --- gns3server/modules/docker/docker_vm.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/gns3server/modules/docker/docker_vm.py b/gns3server/modules/docker/docker_vm.py index b60d67864..94385c89e 100644 --- a/gns3server/modules/docker/docker_vm.py +++ b/gns3server/modules/docker/docker_vm.py @@ -326,6 +326,8 @@ class DockerVM(BaseVM): if state == "paused": yield from self.unpause() else: + yield from self._clean_servers() + result = yield from self.manager.query("POST", "containers/{}/start".format(self._cid)) namespace = yield from self._get_namespace() @@ -473,16 +475,23 @@ class DockerVM(BaseVM): log.info("Docker container '{name}' [{image}] restarted".format( name=self._name, image=self._image)) + @asyncio.coroutine + def _clean_servers(self): + """ + Clean the list of running console servers + """ + if len(self._telnet_servers) > 0: + for telnet_server in self._telnet_servers: + telnet_server.close() + yield from telnet_server.wait_closed() + self._telnet_servers = [] + @asyncio.coroutine def stop(self): """Stops this Docker container.""" try: - if len(self._telnet_servers) > 0: - for telnet_server in self._telnet_servers: - telnet_server.close() - yield from telnet_server.wait_closed() - self._telnet_servers = [] + yield from self._clean_servers() if self._ubridge_hypervisor and self._ubridge_hypervisor.is_running(): yield from self._ubridge_hypervisor.stop()