mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
scd: Enable card removal check after select_application.
* scd/apdu.c (open_ccid_reader): Fix error handling of ccid_get_atr. * scd/app.c (select_application): Always kick the loop if new APP. * scd/ccid-driver.c (ccid_open_usb_reader): Don't setup at open. (ccid_slot_status): Setup interrupt transfer when !ON_WIRE. -- We can use the interrupt transfer to be notified about card status change. In this case, we don't need to issue PC_to_RDR_GetSlotStatus command. This change improve the setup the notification; it should be done after registration of APP. When the setup is done just after opening the USB connection (before issuing PC_to_RDR_IccPowerOn), a reader might notifies about no card availability (because of not yet powered on), even though the card is ready to be powered on. GnuPG-bug-id: 3508 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
e0140c0a6a
commit
0bb7fd0cab
4 changed files with 18 additions and 12 deletions
|
@ -1661,9 +1661,6 @@ ccid_open_usb_reader (const char *spec_reader_name,
|
|||
}
|
||||
}
|
||||
|
||||
if ((*handle)->ep_intr >= 0)
|
||||
ccid_setup_intr (*handle);
|
||||
|
||||
rc = ccid_vendor_specific_init (*handle);
|
||||
|
||||
leave:
|
||||
|
@ -2311,6 +2308,11 @@ ccid_slot_status (ccid_driver_t handle, int *statusbits, int on_wire)
|
|||
no need to send on wire. */
|
||||
if (!on_wire && !ccid_require_get_status (handle))
|
||||
{
|
||||
/* Setup interrupt transfer at the initial call of slot_status
|
||||
with ON_WIRE == 0 */
|
||||
if (handle->transfer == NULL && handle->ep_intr >= 0)
|
||||
ccid_setup_intr (handle);
|
||||
|
||||
*statusbits = 0;
|
||||
return 0;
|
||||
}
|
||||
|
@ -3748,7 +3750,7 @@ main (int argc, char **argv)
|
|||
if (!no_poll)
|
||||
ccid_poll (ccid);
|
||||
fputs ("getting slot status ...\n", stderr);
|
||||
rc = ccid_slot_status (ccid, &slotstat);
|
||||
rc = ccid_slot_status (ccid, &slotstat, 1);
|
||||
if (rc)
|
||||
{
|
||||
print_error (rc);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue