diff --git a/gns3server/controller/compute.py b/gns3server/controller/compute.py index 7ec8691a8..d32a1a84a 100644 --- a/gns3server/controller/compute.py +++ b/gns3server/controller/compute.py @@ -102,7 +102,13 @@ class Compute: def _session(self): if self._http_session is None or self._http_session.closed is True: - connector = aiohttp.TCPConnector(force_close=True, ssl_context=self._ssl_context) + # Reuse TCP keep-alive for local compute (loopback) to avoid paying + # a TCP handshake on every HTTP request; force-close for remote + # computes in case intermediate firewalls/NATs drop idle connections. + _local = self._host in ("127.0.0.1", "::1", "localhost") + connector = aiohttp.TCPConnector( + force_close=not _local, ssl_context=self._ssl_context + ) self._http_session = aiohttp.ClientSession(connector=connector) return self._http_session