mirror of
git://git.gnupg.org/gnupg.git
synced 2025-05-24 16:43:28 +02:00
scd: Fix cancel INTERRUPT transfer.
* scd/ccid-driver.c (do_close_reader): Don't lock events, but check the return value of libusb_cancel_transfer. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
f3d9b2582b
commit
216afba0d9
@ -2116,22 +2116,15 @@ do_close_reader (ccid_driver_t handle)
|
|||||||
{
|
{
|
||||||
if (handle->transfer)
|
if (handle->transfer)
|
||||||
{
|
{
|
||||||
/* By locking libusb events, make sure handle->transfer is
|
|
||||||
canceled properly; Don't cancel completed transfer. */
|
|
||||||
#ifdef USE_NPTH
|
|
||||||
npth_unprotect ();
|
|
||||||
#endif
|
|
||||||
libusb_lock_events (NULL);
|
|
||||||
#ifdef USE_NPTH
|
|
||||||
npth_protect ();
|
|
||||||
#endif
|
|
||||||
if (!handle->powered_off)
|
if (!handle->powered_off)
|
||||||
{
|
{
|
||||||
libusb_cancel_transfer (handle->transfer);
|
DEBUGOUT ("libusb_cancel_transfer\n");
|
||||||
libusb_unlock_events (NULL);
|
|
||||||
|
|
||||||
|
rc = libusb_cancel_transfer (handle->transfer);
|
||||||
|
if (rc != LIBUSB_ERROR_NOT_FOUND)
|
||||||
while (!handle->powered_off)
|
while (!handle->powered_off)
|
||||||
{
|
{
|
||||||
|
DEBUGOUT ("libusb_handle_events_completed\n");
|
||||||
#ifdef USE_NPTH
|
#ifdef USE_NPTH
|
||||||
npth_unprotect ();
|
npth_unprotect ();
|
||||||
#endif
|
#endif
|
||||||
@ -2141,8 +2134,6 @@ do_close_reader (ccid_driver_t handle)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
libusb_unlock_events (NULL);
|
|
||||||
|
|
||||||
libusb_free_transfer (handle->transfer);
|
libusb_free_transfer (handle->transfer);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user