From 8657e6afc66d77068a25d66e98127b88007030d4 Mon Sep 17 00:00:00 2001 From: ARIA Date: Mon, 31 Aug 2026 23:17:30 +0200 Subject: [PATCH] fix(http): test acquire_scoped_lock's bool, not the always-truthy tuple acquire_scoped_lock returns (acquired, existing_record); the old 'if not acquire_scoped_lock(...)' tested the tuple, which is always truthy, so the 'port in use by another profile' pre-check never fired and a conflict surfaced as a generic bind failure. Unpack and test the first element, matching gateway/platforms/base.py's canonical usage. Bump VERSION / plugin.yaml to 0.1.3. --- VERSION | 2 +- gateway-plugin/http_server.py | 6 +++++- gateway-plugin/plugin.yaml | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index d917d3e..b1e80bb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.2 +0.1.3 diff --git a/gateway-plugin/http_server.py b/gateway-plugin/http_server.py index 1bc95ee..5889e5d 100644 --- a/gateway-plugin/http_server.py +++ b/gateway-plugin/http_server.py @@ -199,7 +199,11 @@ class HttpServer: from gateway.status import acquire_scoped_lock lock_key = f"http:{host}:{port}" - if not acquire_scoped_lock("iris", lock_key): + # acquire_scoped_lock returns (acquired, existing_record); the + # tuple is always truthy, so test the first element (matching + # gateway/platforms/base.py's canonical usage). + acquired, _ = acquire_scoped_lock("iris", lock_key) + if not acquired: logger.warning( "iris: HTTP port %s:%s in use by another profile; server disabled", host, diff --git a/gateway-plugin/plugin.yaml b/gateway-plugin/plugin.yaml index 2829016..9950570 100644 --- a/gateway-plugin/plugin.yaml +++ b/gateway-plugin/plugin.yaml @@ -5,7 +5,7 @@ kind: platform # scripts/check_version_sync.sh on commit). This field is the version the # gateway advertises in production installs, where only this plugin dir is # shipped (see version.py). -version: 0.1.2 +version: 0.1.3 description: > Native Android / Desktop client gateway adapter for Hermes Agent. Runs an HTTP server (optional TLS) inside the gateway; the app connects