From 468e51c72bbaa4aeaf20382337320568e93b9316 Mon Sep 17 00:00:00 2001 From: Andrew Resch Date: Thu, 24 Jan 2008 01:31:48 +0000 Subject: [PATCH] Fix deregistering signal receivers in the core. --- deluge/core/signalmanager.py | 4 ++-- deluge/ui/signalreceiver.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/deluge/core/signalmanager.py b/deluge/core/signalmanager.py index e292efed5..164d3d7b7 100644 --- a/deluge/core/signalmanager.py +++ b/deluge/core/signalmanager.py @@ -50,8 +50,8 @@ class SignalManager(component.Component): def deregister_client(self, address): """Deregisters a client""" log.debug("Deregistering %s as a signal reciever..", address) - for client in self.clients: - if client[:len(address)] == address: + for client in self.clients.keys(): + if client.split("//")[1].split(":")[0] == address: del self.clients[client] break diff --git a/deluge/ui/signalreceiver.py b/deluge/ui/signalreceiver.py index 6486189c4..61b11054e 100644 --- a/deluge/ui/signalreceiver.py +++ b/deluge/ui/signalreceiver.py @@ -94,7 +94,8 @@ class SignalReceiver( self._shutdown = True # De-register with the daemon so it doesn't try to send us more signals client.deregister_client() - + client.force_call() + # Hacky.. sends a request to our local receiver to ensure that it # shutdowns.. This is because handle_request() is a blocking call. receiver = xmlrpclib.ServerProxy("http://localhost:" + str(self.port),