summaryrefslogtreecommitdiffstats
path: root/usbmuxd/usb-linux.c
diff options
context:
space:
mode:
Diffstat (limited to 'usbmuxd/usb-linux.c')
-rw-r--r--usbmuxd/usb-linux.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/usbmuxd/usb-linux.c b/usbmuxd/usb-linux.c
index 6e99a95..9634d14 100644
--- a/usbmuxd/usb-linux.c
+++ b/usbmuxd/usb-linux.c
@@ -279,11 +279,19 @@ static int usb_discover(void)
279 usbmuxd_log(LL_WARNING, "Could not open device %d-%d: %d", bus, address, res); 279 usbmuxd_log(LL_WARNING, "Could not open device %d-%d: %d", bus, address, res);
280 continue; 280 continue;
281 } 281 }
282 if((res = libusb_set_configuration(handle, USB_CONFIGURATION)) != 0) { 282 int current_config = 0;
283 usbmuxd_log(LL_WARNING, "Could not set configuration %d for device %d-%d: %d", USB_CONFIGURATION, bus, address, res); 283 if((res = libusb_get_configuration(handle, &current_config)) != 0) {
284 usbmuxd_log(LL_WARNING, "Could not get configuration for device %d-%d: %d", bus, address, res);
284 libusb_close(handle); 285 libusb_close(handle);
285 continue; 286 continue;
286 } 287 }
288 if (current_config != devdesc.bNumConfigurations) {
289 if((res = libusb_set_configuration(handle, devdesc.bNumConfigurations)) != 0) {
290 usbmuxd_log(LL_WARNING, "Could not set configuration %d for device %d-%d: %d", devdesc.bNumConfigurations, bus, address, res);
291 libusb_close(handle);
292 continue;
293 }
294 }
287 if((res = libusb_claim_interface(handle, USB_INTERFACE)) != 0) { 295 if((res = libusb_claim_interface(handle, USB_INTERFACE)) != 0) {
288 usbmuxd_log(LL_WARNING, "Could not claim interface %d for device %d-%d: %d", USB_INTERFACE, bus, address, res); 296 usbmuxd_log(LL_WARNING, "Could not claim interface %d for device %d-%d: %d", USB_INTERFACE, bus, address, res);
289 libusb_close(handle); 297 libusb_close(handle);