diff options
author | Lauren Perry <lauren.perry@codethink.co.uk> | 2015-01-20 11:48:05 +0000 |
---|---|---|
committer | Lauren Perry <lauren.perry@codethink.co.uk> | 2015-02-09 16:01:20 +0000 |
commit | 0563ed23dedd5dc8422e2407b01ca5ade040f051 (patch) | |
tree | e483d381723ab9c50d7f86d98fecd29909331189 /distbuild/initiator_connection.py | |
parent | f0c5d4c0ef35cc43aa059cd2255e41c60c4cac77 (diff) | |
download | morph-0563ed23dedd5dc8422e2407b01ca5ade040f051.tar.gz |
Fix distbuild controller crashing on some invalid inputs
Diffstat (limited to 'distbuild/initiator_connection.py')
-rw-r--r-- | distbuild/initiator_connection.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/distbuild/initiator_connection.py b/distbuild/initiator_connection.py index db982230..9dbca397 100644 --- a/distbuild/initiator_connection.py +++ b/distbuild/initiator_connection.py @@ -100,15 +100,19 @@ class InitiatorConnection(distbuild.StateMachine): logging.debug('InitiatorConnection: from %s: %r', self.initiator_name, event.msg) - if event.msg['type'] == 'build-request': - new_id = self._idgen.next() - self.our_ids.add(new_id) - self._route_map.add(event.msg['id'], new_id) - event.msg['id'] = new_id - build_controller = distbuild.BuildController( - self, event.msg, self.artifact_cache_server, - self.morph_instance) - self.mainloop.add_state_machine(build_controller) + try: + if event.msg['type'] == 'build-request': + new_id = self._idgen.next() + self.our_ids.add(new_id) + self._route_map.add(event.msg['id'], new_id) + event.msg['id'] = new_id + build_controller = distbuild.BuildController( + self, event.msg, self.artifact_cache_server, + self.morph_instance) + self.mainloop.add_state_machine(build_controller) + except (KeyError, ValueError) as ex: + logging.error('Invalid message from initiator: %s: exception %s', + event.msg, ex) def _disconnect(self, event_source, event): for id in self.our_ids: |