diff options
Diffstat (limited to 'libusb/sync.c')
-rw-r--r-- | libusb/sync.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libusb/sync.c b/libusb/sync.c index 92e7833..72cbcf2 100644 --- a/libusb/sync.c +++ b/libusb/sync.c @@ -104,6 +104,8 @@ API_EXPORTED int libusb_control_transfer(libusb_device_handle *dev_handle, while (!completed) { r = libusb_handle_events(HANDLE_CTX(dev_handle)); if (r < 0) { + if (r == LIBUSB_ERROR_INTERRUPTED) + continue; libusb_cancel_transfer(transfer); while (!completed) if (libusb_handle_events(HANDLE_CTX(dev_handle)) < 0) @@ -172,6 +174,8 @@ static int do_sync_bulk_transfer(struct libusb_device_handle *dev_handle, while (!completed) { r = libusb_handle_events(HANDLE_CTX(dev_handle)); if (r < 0) { + if (r == LIBUSB_ERROR_INTERRUPTED) + continue; libusb_cancel_transfer(transfer); while (!completed) if (libusb_handle_events(HANDLE_CTX(dev_handle)) < 0) |