scd: Enable card removal check after select_application.
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 21 Nov 2017 02:52:54 +0000 (11:52 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 21 Nov 2017 03:19:15 +0000 (12:19 +0900)
commit0bb7fd0cab2d53cd0d44b21301b23edfe817e66b
tree0ae3b8ebc88c4a790abad40cb0cfcdb14f77b658
parente0140c0a6abcb07207234857e0a8ba6b2e60ed51
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>
scd/apdu.c
scd/app.c
scd/ccid-driver.c
scd/scdaemon.c