diff --git a/gns3server/compute/dynamips/nodes/ethernet_switch.py b/gns3server/compute/dynamips/nodes/ethernet_switch.py index d45088f1..6d044bcd 100644 --- a/gns3server/compute/dynamips/nodes/ethernet_switch.py +++ b/gns3server/compute/dynamips/nodes/ethernet_switch.py @@ -166,8 +166,8 @@ class EthernetSwitch(Device): self._telnet_shell = EthernetSwitchConsole(self) self._telnet_shell.prompt = self._name + '> ' - telnet = create_telnet_shell(self._telnet_shell) - self._telnet_server = (yield from asyncio.start_server(telnet.run, self._manager.port_manager.console_host, self.console)) + self._telnet = create_telnet_shell(self._telnet_shell) + self._telnet_server = (yield from asyncio.start_server(self._telnet.run, self._manager.port_manager.console_host, self.console)) self._hypervisor.devices.append(self) @@ -214,7 +214,9 @@ class EthernetSwitch(Device): """ Deletes this Ethernet switch. """ - + yield from self._telnet.close() + self._telnet_server.close() + for nio in self._nios.values(): if nio: yield from nio.close() diff --git a/gns3server/utils/asyncio/telnet_server.py b/gns3server/utils/asyncio/telnet_server.py index faee7b21..782b12ae 100644 --- a/gns3server/utils/asyncio/telnet_server.py +++ b/gns3server/utils/asyncio/telnet_server.py @@ -209,6 +209,12 @@ class AsyncioTelnetServer: yield from connection.disconnected() del self._connections[network_writer] + @asyncio.coroutine + def close(self): + for writer, connection in self._connections.items(): + writer.write_eof() + yield from writer.drain() + @asyncio.coroutine def client_connected_hook(self): pass