summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2021-01-28 00:54:34 +0100
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2021-01-28 15:38:57 +0100
commite1e3f6955e389d83568b6135e794c720e1c4acef (patch)
tree055f1100b1259dcb61a4833a1b8873605db3d19f
parentc495b8200045388806c72270fba29401072b8c43 (diff)
virtual-device: Remove messages we can't process from queue when not scanning
Commands that are not valid for non-scan operations should be removed from queue, or these may be re-proposed forever.
-rw-r--r--libfprint/drivers/virtual-device.c6
-rw-r--r--tests/virtual-device.py6
2 files changed, 11 insertions, 1 deletions
diff --git a/libfprint/drivers/virtual-device.c b/libfprint/drivers/virtual-device.c
index 6a321f6..6f83a05 100644
--- a/libfprint/drivers/virtual-device.c
+++ b/libfprint/drivers/virtual-device.c
@@ -164,7 +164,11 @@ process_cmds (FpDeviceVirtualDevice * self,
/* If we are not scanning, then we have to stop here. */
if (!scan)
- break;
+ {
+ g_warning ("Could not process command: %s", cmd);
+ g_ptr_array_remove_index (self->pending_commands, 0);
+ break;
+ }
if (g_str_has_prefix (cmd, SCAN_CMD_PREFIX))
{
diff --git a/tests/virtual-device.py b/tests/virtual-device.py
index c8cae88..941b30c 100644
--- a/tests/virtual-device.py
+++ b/tests/virtual-device.py
@@ -556,6 +556,12 @@ class VirtualDevice(unittest.TestCase):
self.assertFalse(self._verify_completed)
self.cancel_verify()
+ # Since we don't really cancel here, next command will be passed to release
+ self._close_on_teardown = False
+ with GLibErrorMessage('libfprint-virtual_device',
+ GLib.LogLevelFlags.LEVEL_WARNING, 'Could not process command: SCAN *'):
+ self.dev.close_sync()
+
def test_device_sleep_before_completing_verify(self):
enrolled = self.enroll_print('foo-print', FPrint.Finger.LEFT_RING)