From db84b551cc07ca3d4e710d37225e0b9444cb4a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavo=20I=C3=B1iguez=20Goia?= Date: Mon, 25 Nov 2024 23:24:29 +0100 Subject: [PATCH] ui,popups: fixed exception getting node address when adding a new rule When a popup was displayed to the user, if they took more than 120s to respond, the address of the node was lost. This is because the daemon has hardcoded a max timeout of 120s. If it fires, the call to AskRule is closed and the context is lost. In this situation, save the address of the node at the start of AskRule, so we can reuse it later. Closes: #1219 --- ui/opensnitch/service.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ui/opensnitch/service.py b/ui/opensnitch/service.py index 3acf5dd9..163b09f1 100644 --- a/ui/opensnitch/service.py +++ b/ui/opensnitch/service.py @@ -787,8 +787,9 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject): # TODO: allow connections originated from ourselves: os.getpid() == request.pid) self._asking = True - proto, addr = self._get_peer(context.peer()) - rule, timeout_triggered = self._prompt_dialog.promptUser(request, self._is_local_request(proto, addr), context.peer()) + peer = context.peer() + proto, addr = self._get_peer(peer) + rule, timeout_triggered = self._prompt_dialog.promptUser(request, self._is_local_request(proto, addr), peer) self._last_ping = datetime.now() self._asking = False if rule == None: @@ -812,14 +813,14 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject): { 'action': self.DELETE_RULE, 'name': rule.name, - 'addr': context.peer() + 'addr': peer } ) else: self._node_actions_trigger.emit( { 'action': self.ADD_RULE, - 'peer': context.peer(), + 'peer': peer, 'rule': rule } )