Index: libusb10.c =================================================================== --- libusb10.c (revision 338454) +++ libusb10.c (working copy) @@ -1465,7 +1463,13 @@ (libusb20_tr_get_priv_sc1(pxfer1) == sxfer)) { err = LIBUSB_ERROR_BUSY; } else { + struct libusb_device_handle *devh; + devh = uxfer->dev_handle; + + if (libusb20_dev_check_connected(devh)) + goto end; + /* set pending state */ sxfer->state = LIBUSB_SUPER_XFER_ST_PEND; @@ -1479,6 +1483,7 @@ err = 0; /* success */ } +end: CTX_UNLOCK(dev->ctx); DPRINTF(dev->ctx, LIBUSB_DEBUG_FUNCTION, "libusb_submit_transfer leave %d", err);