@ -2367,12 +2367,17 @@ static int usb_transfer_toerr(int ret)
@@ -2367,12 +2367,17 @@ static int usb_transfer_toerr(int ret)
}
/* Wait for callback function to tell us it has finished the USB transfer, but
* use our own timer to cancel the request if we go beyond the timeout . */
static int callback_wait ( struct usb_transfer * ut , int * transferred , unsigned int timeout )
* use our own timer to cancel the request if we go beyond the allocated
* timeout on linux . Windows ' cancel transfer breaks so we use libusb ' s own
* timeouts and simply wait . */
static int callback_wait ( struct usb_transfer * ut , int * transferred , __maybe_unused unsigned int timeout )
{
struct libusb_transfer * transfer = ut - > transfer ;
int ret ;
# ifdef WIN32
cgsem_wait ( & ut - > cgsem ) ;
# else
ret = cgsem_mswait ( & ut - > cgsem , timeout ) ;
if ( ret = = ETIMEDOUT ) {
/* We are emulating a timeout ourself here */
@ -2381,6 +2386,7 @@ static int callback_wait(struct usb_transfer *ut, int *transferred, unsigned int
@@ -2381,6 +2386,7 @@ static int callback_wait(struct usb_transfer *ut, int *transferred, unsigned int
/* Now wait for the callback function to be invoked. */
cgsem_wait ( & ut - > cgsem ) ;
}
# endif
ret = transfer - > status ;
ret = usb_transfer_toerr ( ret ) ;