[Pcsclite-cvs-commit] r5458 - /trunk/Drivers/ccid/src/ccid_usb.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Fri Dec 17 08:59:22 UTC 2010


Author: rousseau
Date: Fri Dec 17 08:59:21 2010
New Revision: 5458

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5458
Log:
OpenUSBByName(): return STATUS_COMM_ERROR instead of
STATUS_NO_SUCH_DEVICE if the cause of the failure is
libusb_claim_interface(). The main cause if the use of OpenCT.

The OpenCT detection code in pcsc-lite is not triggered if the driver
returns STATUS_NO_SUCH_DEVICE. So the driver must return someting else
in that case.

Modified:
    trunk/Drivers/ccid/src/ccid_usb.c

Modified: trunk/Drivers/ccid/src/ccid_usb.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid_usb.c?rev=5458&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid_usb.c (original)
+++ trunk/Drivers/ccid/src/ccid_usb.c Fri Dec 17 08:59:21 2010
@@ -174,6 +174,7 @@
 	ssize_t cnt;
 	list_t plist, *values, *ifdVendorID, *ifdProductID, *ifdFriendlyName;
 	int rv;
+	int claim_failed = FALSE;
 
 	DEBUG_COMM3("Reader index: %X, Device: %s", reader_index, device);
 
@@ -491,6 +492,7 @@
 					(void)libusb_close(dev_handle);
 					DEBUG_CRITICAL4("Can't claim interface %d/%d: %d",
 						bus_number, device_address, r);
+					claim_failed = TRUE;
 					interface_number = -1;
 					continue;
 				}
@@ -572,6 +574,8 @@
 	{
 		/* does not work for libusb <= 1.0.8 */
 		/* libusb_exit(ctx); */
+		if (claim_failed)
+			return STATUS_COMM_ERROR;
 		return STATUS_NO_SUCH_DEVICE;
 	}
 




More information about the Pcsclite-cvs-commit mailing list