diff --git a/gns3server/utils/asyncio/telnet_server.py b/gns3server/utils/asyncio/telnet_server.py index 8f571d1f1..a6b54d706 100644 --- a/gns3server/utils/asyncio/telnet_server.py +++ b/gns3server/utils/asyncio/telnet_server.py @@ -251,8 +251,12 @@ class AsyncioTelnetServer: async def _invoke_window_size_changed(self, connection, columns, rows): try: await connection.window_size_changed(columns, rows) + except asyncio.CancelledError: + raise except (ConnectionError, OSError): connection.close() + except Exception: + log.exception("Unhandled exception in window_size_changed callback for %r", connection) async def _run_client_session(self, network_reader, network_writer): self._set_socket_options(network_writer) diff --git a/tests/utils/asyncio/test_telnet_server.py b/tests/utils/asyncio/test_telnet_server.py index dcd1c1efe..d91fb91c9 100644 --- a/tests/utils/asyncio/test_telnet_server.py +++ b/tests/utils/asyncio/test_telnet_server.py @@ -143,7 +143,7 @@ async def test_telnet_server_broadcast_survives_client_disconnect(): await _wait_for_connection_count(server, 2) client1_writer.close() - await asyncio.sleep(0.2) + await _wait_for_connection_count(server, 1) upstream_reader.feed_data(b"ok") data2 = await asyncio.wait_for(client2_reader.read(2), timeout=2)