From 243aab9cec470d2ae4bf23d969ea10d5ce9b8e3d Mon Sep 17 00:00:00 2001 From: Goffi Date: Thu, 19 Mar 2026 12:01:21 +0100 Subject: [PATCH] bridge (pb): Remove existing socket if any: If the backend was not closed properly, the former socket may still be present. This was preventing the backend to start again, while now the old socket is removed in this case. --- .../constructors/pb/pb_core_template.py | 20 ++++++++++++++++--- libervia/backend/bridge/pb.py | 20 ++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/libervia/backend/bridge/bridge_constructor/constructors/pb/pb_core_template.py b/libervia/backend/bridge/bridge_constructor/constructors/pb/pb_core_template.py index 88db419f..e3de6718 100644 --- a/libervia/backend/bridge/bridge_constructor/constructors/pb/pb_core_template.py +++ b/libervia/backend/bridge/bridge_constructor/constructors/pb/pb_core_template.py @@ -19,10 +19,12 @@ import dataclasses -from functools import partial from pathlib import Path -from twisted.spread import jelly, pb + from twisted.internet import reactor +from twisted.spread import jelly, pb + +from libervia.backend.core import exceptions from libervia.backend.core.log import getLogger from libervia.backend.tools import config @@ -103,7 +105,7 @@ class PBRoot(pb.Root): ##METHODS_PART## -class bridge(object): +class bridge: def __init__(self): log.info("Init Perspective Broker...") self.root = PBRoot() @@ -113,6 +115,18 @@ class bridge(object): if conn_type == "unix_socket": socket_path = bridge_conf.socket_dir / "bridge_pb" log.info(f"using UNIX Socket at {socket_path}") + if socket_path.exists(): + if socket_path.is_socket(): + log.warning( + "There is already a socket at this path, probably due to a bad " + "closing of the backend; we remove it." + ) + socket_path.unlink() + + else: + raise exceptions.BridgeInitError( + f"Unexpected file at socket path: {socket_path}" + ) reactor.listenUNIX( str(socket_path), pb.PBServerFactory(self.root), mode=0o600 ) diff --git a/libervia/backend/bridge/pb.py b/libervia/backend/bridge/pb.py index 2215f846..e8b12436 100644 --- a/libervia/backend/bridge/pb.py +++ b/libervia/backend/bridge/pb.py @@ -19,10 +19,12 @@ import dataclasses -from functools import partial from pathlib import Path -from twisted.spread import jelly, pb + from twisted.internet import reactor +from twisted.spread import jelly, pb + +from libervia.backend.core import exceptions from libervia.backend.core.log import getLogger from libervia.backend.tools import config @@ -103,7 +105,7 @@ class PBRoot(pb.Root): ##METHODS_PART## -class bridge(object): +class bridge: def __init__(self): log.info("Init Perspective Broker...") self.root = PBRoot() @@ -113,6 +115,18 @@ class bridge(object): if conn_type == "unix_socket": socket_path = bridge_conf.socket_dir / "bridge_pb" log.info(f"using UNIX Socket at {socket_path}") + if socket_path.exists(): + if socket_path.is_socket(): + log.warning( + "There is already a socket at this path, probably due to a bad " + "closing of the backend; we remove it." + ) + socket_path.unlink() + + else: + raise exceptions.BridgeInitError( + f"Unexpected file at socket path: {socket_path}" + ) reactor.listenUNIX( str(socket_path), pb.PBServerFactory(self.root), mode=0o600 )