From 2361e138ec540c74423176358fbf40b1b9d27a76 Mon Sep 17 00:00:00 2001 From: grossmj Date: Tue, 30 May 2023 16:17:12 +0930 Subject: [PATCH] Properly catch aiohttp client exception. Ref #2228 --- gns3server/compute/docker/__init__.py | 4 ++-- gns3server/controller/compute.py | 2 +- gns3server/controller/project.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gns3server/compute/docker/__init__.py b/gns3server/compute/docker/__init__.py index ea2a63cd..cc82daf9 100644 --- a/gns3server/compute/docker/__init__.py +++ b/gns3server/compute/docker/__init__.py @@ -150,9 +150,9 @@ class Docker(BaseManager): data=data, headers={"content-type": "application/json", }, timeout=timeout) - except (aiohttp.ClientResponseError, aiohttp.ClientOSError) as e: + except aiohttp.ClientError as e: raise DockerError("Docker has returned an error: {}".format(str(e))) - except (asyncio.TimeoutError): + except asyncio.TimeoutError: raise DockerError("Docker timeout " + method + " " + path) if response.status >= 300: body = await response.read() diff --git a/gns3server/controller/compute.py b/gns3server/controller/compute.py index bf69b863..2b903745 100644 --- a/gns3server/controller/compute.py +++ b/gns3server/controller/compute.py @@ -450,7 +450,7 @@ class Compute: elif response.type == aiohttp.WSMsgType.CLOSED: pass break - except aiohttp.client_exceptions.ClientResponseError as e: + except aiohttp.ClientError as e: log.error("Client response error received on compute '{}' WebSocket '{}': {}".format(self._id, ws_url,e)) finally: self._connected = False diff --git a/gns3server/controller/project.py b/gns3server/controller/project.py index 1a7213da..c4dc3b95 100644 --- a/gns3server/controller/project.py +++ b/gns3server/controller/project.py @@ -798,7 +798,7 @@ class Project: try: await compute.post("/projects/{}/close".format(self._id), dont_connect=True) # We don't care if a compute is down at this step - except (ComputeError, aiohttp.web.HTTPError, aiohttp.ClientResponseError, TimeoutError): + except (ComputeError, aiohttp.web.HTTPError, aiohttp.ClientError, TimeoutError): pass self._clean_pictures() self._status = "closed"