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 )