From fdcc7058cb78fdf2baf078f9b125abeae41e1d11 Mon Sep 17 00:00:00 2001 From: YueGuobin Date: Tue, 11 Aug 2026 23:27:30 +0800 Subject: [PATCH] revert: restore force_close=True in compute._session() The per-commit force_close=not _local optimisation reused TCP connections for the loopback compute, but _session() is also used for the controller's WebSocket heartbeat connection (_connect_notification -> ws_connect). The different connector behaviour prevented the compute from receiving pings, so no compute.updated events reached the WebUI and the compute cache stayed empty. --- gns3server/controller/compute.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/gns3server/controller/compute.py b/gns3server/controller/compute.py index 16d6037df..dbd54c151 100644 --- a/gns3server/controller/compute.py +++ b/gns3server/controller/compute.py @@ -106,13 +106,7 @@ class Compute: def _session(self): if self._http_session is None or self._http_session.closed is True: - # 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 - ) + connector = aiohttp.TCPConnector(force_close=True, ssl_context=self._ssl_context) self._http_session = aiohttp.ClientSession(connector=connector) return self._http_session