aboutsummaryrefslogtreecommitdiffstats
path: root/scd/ccid-driver.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2020-09-30 01:56:38 +0000
committerNIIBE Yutaka <[email protected]>2020-09-30 01:56:38 +0000
commit920f258eb6018ecec1d63bad6a0fb0772f72affa (patch)
tree49f05e2a962ca5f5acf60d723bbfee081734b093 /scd/ccid-driver.c
parentscd: Report any error for LEARN command. (diff)
downloadgnupg-920f258eb6018ecec1d63bad6a0fb0772f72affa.tar.gz
gnupg-920f258eb6018ecec1d63bad6a0fb0772f72affa.zip
scd: Internal CCID driver: More fix for SPR532.
* scd/ccid-driver.c (bulk_in): Handle the case of missing intr_cb. -- GnuPG-bug-id: 5065 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'scd/ccid-driver.c')
-rw-r--r--scd/ccid-driver.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c
index 8315d7f81..944575e0b 100644
--- a/scd/ccid-driver.c
+++ b/scd/ccid-driver.c
@@ -2136,11 +2136,11 @@ bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length,
* Communication failure by device side.
* Possibly, it was forcibly suspended and resumed.
*
- * Only detect this kind of failure when interrupt transfer is
- * not supported. For card reader with interrupt transfer
- * support removal is detected by intr_cb.
+ * For card reader with interrupt transfer support, ideally,
+ * removal is detected by intr_cb, but some card reader
+ * (e.g. SPR532) has a case of missing report to intr_cb.
*/
- if (handle->ep_intr < 0)
+ if (handle->ep_intr < 0 || handle->id_vendor == VENDOR_SCM)
{
DEBUGOUT ("CCID: card inactive/removed\n");
handle->powered_off = 1;