summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usbredirhost/usbredirhost.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/usbredirhost/usbredirhost.c b/usbredirhost/usbredirhost.c
index 86e1a92..47ee5e4 100644
--- a/usbredirhost/usbredirhost.c
+++ b/usbredirhost/usbredirhost.c
@@ -1912,7 +1912,9 @@ static void usbredirhost_cancel_data_packet(void *priv, uint64_t id)
LOCK(host);
for (t = host->transfers_head.next; t; t = t->next) {
- if (t->id == id) {
+ /* After cancellation the guest may re-use the id, so skip already
+ cancelled packets */
+ if (!t->cancelled && t->id == id) {
break;
}
}