~ubuntuone-control-tower/ubuntuone-client/trunk

« back to all changes in this revision

Viewing changes to ubuntuone/platform/windows/ipc.py

- Do not remove a dead IPC client while iterating the list of clients. (LP: #834224).

Show diffs side-by-side

added added

removed removed

Lines of Context:
185
185
    def emit_signal(self, signal_name, *args, **kwargs):
186
186
        """Emit the given signal to the clients."""
187
187
        logger.debug("emitting %r to all connected clients.", signal_name)
 
188
        dead_clients = []
188
189
        for current_client in self.clients:
189
190
            try:
190
191
                d = current_client.callRemote(signal_name, *args, **kwargs)
192
193
                                                          current_client)
193
194
                d.addErrback(self._other_failure, signal_name, current_client)
194
195
            except DeadReferenceError:
195
 
                self.remote_unregister_to_signals(current_client)
 
196
                dead_clients.append(current_client)
 
197
        for client in dead_clients:
 
198
            self.remote_unregister_to_signals(client)
196
199
 
197
200
 
198
201
class Status(Referenceable, SignalBroadcaster):