tools/qvm-start-gui: do not crash on qubesd restart
Do not crash if qubesd restart exactly the moment event handler was called. Event listener properly handle qubesd restarts (reconnects), but exists if any handler raise an exception. Avoid this by logging such exceptions but not propagating them.
Dieser Commit ist enthalten in:
Ursprung
a481490d60
Commit
72a2fd646d
@ -30,6 +30,7 @@ import xcffib.xproto # pylint: disable=unused-import
|
||||
|
||||
import daemon.pidfile
|
||||
import qubesadmin
|
||||
import qubesadmin.exc
|
||||
import qubesadmin.tools
|
||||
import qubesadmin.vm
|
||||
have_events = False
|
||||
@ -306,17 +307,24 @@ class GUILauncher(object):
|
||||
|
||||
def on_domain_spawn(self, vm, _event, **kwargs):
|
||||
'''Handler of 'domain-spawn' event, starts GUI daemon for stubdomain'''
|
||||
try:
|
||||
if not vm.features.check_with_template('gui', True):
|
||||
return
|
||||
if vm.virt_mode == 'hvm' and kwargs.get('start_guid', 'True') == 'True':
|
||||
if vm.virt_mode == 'hvm' and \
|
||||
kwargs.get('start_guid', 'True') == 'True':
|
||||
asyncio.ensure_future(self.start_gui_for_stubdomain(vm))
|
||||
except qubesadmin.exc.QubesException as e:
|
||||
vm.log.warning('Failed to start GUI for %s: %s', vm.name, str(e))
|
||||
|
||||
def on_domain_start(self, vm, _event, **kwargs):
|
||||
'''Handler of 'domain-start' event, starts GUI daemon for actual VM'''
|
||||
try:
|
||||
if not vm.features.check_with_template('gui', True):
|
||||
return
|
||||
if kwargs.get('start_guid', 'True') == 'True':
|
||||
asyncio.ensure_future(self.start_gui_for_vm(vm))
|
||||
except qubesadmin.exc.QubesException as e:
|
||||
vm.log.warning('Failed to start GUI for %s: %s', vm.name, str(e))
|
||||
|
||||
def on_connection_established(self, _subject, _event, **_kwargs):
|
||||
'''Handler of 'connection-established' event, used to launch GUI
|
||||
|
||||
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren