darwin: Don't drop partial data on timeout
authorVegard Storheil Eriksen <zyp@jvnv.net>
Mon, 15 Feb 2021 21:57:06 +0000 (22:57 +0100)
committerNathan Hjelm <hjelmn@cs.unm.edu>
Tue, 16 Feb 2021 04:05:42 +0000 (21:05 -0700)
A timed out transfer might have been partially filled. Propagate
tpriv->size to avoid dropping this data.

Closes #876

Signed-off-by: Nathan Hjelm <hjelmn@cs.unm.edu>
libusb/os/darwin_usb.c
libusb/version_nano.h

index 247954a..337dc92 100644 (file)
@@ -2169,7 +2169,7 @@ static int darwin_handle_transfer_completion (struct usbi_transfer *itransfer) {
 
   usbi_dbg ("handling transfer completion type %s with kernel status %d", transfer_types[transfer->type], tpriv->result);
 
-  if (kIOReturnSuccess == tpriv->result || kIOReturnUnderrun == tpriv->result) {
+  if (kIOReturnSuccess == tpriv->result || kIOReturnUnderrun == tpriv->result || kIOUSBTransactionTimeout == tpriv->result) {
     if (is_isoc && tpriv->isoc_framelist) {
       /* copy isochronous results back */
 
index 4843a50..ff59c20 100644 (file)
@@ -1 +1 @@
-#define LIBUSB_NANO 11605
+#define LIBUSB_NANO 11606