diff --git a/qubesadmin/events/__init__.py b/qubesadmin/events/__init__.py index f6c35ed7..ce2d832a 100644 --- a/qubesadmin/events/__init__.py +++ b/qubesadmin/events/__init__.py @@ -264,6 +264,15 @@ def handle(self, subject, event, **kwargs): except KeyError: pass + handlers = [h_func for h_name, h_func_set in self.handlers.items() + for h_func in h_func_set + if fnmatch.fnmatch(event, h_name)] + + # skip deserializing parameters (which may make further Admin API calls) + # if no handler is registered for the event + if not handlers: + return + # deserialize known attributes if event.startswith('device-'): try: @@ -292,9 +301,6 @@ def handle(self, subject, event, **kwargs): except (KeyError, ValueError): pass - handlers = [h_func for h_name, h_func_set in self.handlers.items() - for h_func in h_func_set - if fnmatch.fnmatch(event, h_name)] for handler in handlers: try: handler(subject, event, **kwargs)