diff --git a/gns3server/compute/docker/__init__.py b/gns3server/compute/docker/__init__.py index 44e9c5c0..5284a246 100644 --- a/gns3server/compute/docker/__init__.py +++ b/gns3server/compute/docker/__init__.py @@ -193,8 +193,8 @@ class Docker(BaseManager): if timeout is None: timeout = 60 * 60 * 24 * 31 # One month timeout - if path == "version": - url = "http://docker/v1.12/" + path # API of docker v1.0 + if path == 'version': + url = "http://docker/v1.24/" + path else: url = "http://docker/v" + DOCKER_MINIMUM_API_VERSION + "/" + path try: diff --git a/gns3server/utils/asyncio/telnet_server.py b/gns3server/utils/asyncio/telnet_server.py index 0dbbe3f5..aad60b19 100644 --- a/gns3server/utils/asyncio/telnet_server.py +++ b/gns3server/utils/asyncio/telnet_server.py @@ -291,9 +291,17 @@ class AsyncioTelnetServer: reader_read = await self._get_reader(network_reader) # Replicate the output on all clients - for connection in self._connections.values(): - connection.writer.write(data) - await connection.writer.drain() + for connection_key in list(self._connections.keys()): + client_info = connection_key.get_extra_info("socket").getpeername() + connection = self._connections[connection_key] + + try: + connection.writer.write(data) + await asyncio.wait_for(connection.writer.drain(), timeout=10) + except: + log.debug(f"Timeout while sending data to client: {client_info}, closing and removing from connection table.") + connection.close() + del self._connections[connection_key] async def _read(self, cmd, buffer, location, reader): """ Reads next op from the buffer or reader"""