transfer_lock should be released before usbi_handle_transfer_completion() call
Closes #430
Signed-off-by: Nathan Hjelm <hjelmn@me.com>
diff --git a/libusb/os/sunos_usb.c b/libusb/os/sunos_usb.c
index 70e1383..ecd4aad 100644
--- a/libusb/os/sunos_usb.c
+++ b/libusb/os/sunos_usb.c
@@ -1360,9 +1360,15 @@
}
usbi_dbg("Done: ctrl data bytes %d", ret);
- /* sync transfer handling */
+ /**
+ * Sync transfer handling.
+ * We should release transfer lock here and later get it back
+ * as usbi_handle_transfer_completion() takes its own transfer lock.
+ */
+ usbi_mutex_unlock(&LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)->lock);
ret = usbi_handle_transfer_completion(LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer),
transfer->status);
+ usbi_mutex_lock(&LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)->lock);
return (ret);
}
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index d108305..13ff675 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11353
+#define LIBUSB_NANO 11354