Skip to content

Commit 5477f8c

Browse files
committed
q-dev: auto-attaching order
1 parent 82b116d commit 5477f8c

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

qubesusbproxy/core3ext.py

+10-5
Original file line numberDiff line numberDiff line change
@@ -523,10 +523,13 @@ async def attach_and_notify(self, vm, assignment):
523523
device, {vm: assignment}):
524524
return
525525

526-
await self.on_device_attach_usb(
527-
vm, 'device-pre-attach:usb', device, assignment.options)
528-
await vm.fire_event_async(
529-
'device-attach:usb', device=device, options=assignment.options)
526+
try:
527+
await self.on_device_attach_usb(
528+
vm, 'device-pre-attach:usb', device, assignment.options)
529+
await vm.fire_event_async(
530+
'device-attach:usb', device=device, options=assignment.options)
531+
except qubes.devices.DeviceAlreadyAttached:
532+
pass
530533

531534
@qubes.ext.handler('domain-qdb-change:/qubes-usb-devices')
532535
def on_qdb_change(self, vm, event, path):
@@ -689,7 +692,9 @@ async def on_device_detach_usb(self, vm, event, port):
689692
@qubes.ext.handler('domain-start')
690693
async def on_domain_start(self, vm, _event, **_kwargs):
691694
# pylint: disable=unused-argument
692-
for assignment in get_assigned_devices(vm.devices['usb']):
695+
# the most specific assignments first
696+
for assignment in reversed(sorted(
697+
get_assigned_devices(vm.devices['usb']))):
693698
await self.attach_and_notify(vm, assignment)
694699

695700
@qubes.ext.handler('domain-shutdown')

0 commit comments

Comments
 (0)