diff options
-rw-r--r-- | usbredirhost/usbredirhost.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/usbredirhost/usbredirhost.c b/usbredirhost/usbredirhost.c index 2663d6a..9664b75 100644 --- a/usbredirhost/usbredirhost.c +++ b/usbredirhost/usbredirhost.c @@ -886,9 +886,13 @@ static int usbredirhost_submit_stream_transfer_unlocked( r = libusb_submit_transfer(transfer->transfer); if (r < 0) { uint8_t ep = transfer->transfer->endpoint; - ERROR("error submitting transfer on ep %02X: %s, stopping stream", - ep, libusb_error_name(r)); - usbredirhost_cancel_stream_unlocked(host, ep); + if (r == LIBUSB_ERROR_NO_DEVICE) { + usbredirhost_handle_disconnect(host); + } else { + ERROR("error submitting transfer on ep %02X: %s, stopping stream", + ep, libusb_error_name(r)); + usbredirhost_cancel_stream_unlocked(host, ep); + } return usb_redir_stall; } |