From 7ec91f1a538b684ae621cd8fee96559c93a4cf7d Mon Sep 17 00:00:00 2001 From: Dmitry Zakablukov Date: Tue, 13 Jul 2021 17:50:28 +0300 Subject: [PATCH] darwin: update the list of endpoints after successfull SetAlternateInterface() Closes #950 Signed-off-by: Nathan Hjelm --- libusb/os/darwin_usb.c | 12 +++++++++++- libusb/version_nano.h | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libusb/os/darwin_usb.c b/libusb/os/darwin_usb.c index d763c9d..ff26800 100644 --- a/libusb/os/darwin_usb.c +++ b/libusb/os/darwin_usb.c @@ -1582,7 +1582,17 @@ static int darwin_set_interface_altsetting(struct libusb_device_handle *dev_hand return LIBUSB_ERROR_NO_DEVICE; kresult = (*(cInterface->interface))->SetAlternateInterface (cInterface->interface, altsetting); - if (kresult != kIOReturnSuccess) + if (kresult == kIOReturnSuccess) { + /* update the list of endpoints */ + ret = get_endpoints (dev_handle, iface); + if (ret) { + /* this should not happen */ + darwin_release_interface (dev_handle, iface); + usbi_err (HANDLE_CTX (dev_handle), "could not build endpoint table"); + } + return ret; + } + else usbi_warn (HANDLE_CTX (dev_handle), "SetAlternateInterface: %s", darwin_error_str(kresult)); if (kresult != kIOUSBPipeStalled) diff --git a/libusb/version_nano.h b/libusb/version_nano.h index ca46981..9582fee 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 11637 +#define LIBUSB_NANO 11638 -- 2.7.4