From cb4fee8bb645745ff199f7428e19226d5bc63dab Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Thu, 28 Apr 2016 12:43:48 +0900
Subject: [PATCH] scd: Fix error return path.

* scd/ccid-driver.c (bulk_in): Remove EAGAIN handling.
Handle LIBUSB_ERROR_NO_DEVICE to return CCID_DRIVER_ERR_NO_READER.

--

GnuPG-bug-id: 2306
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
---
 scd/ccid-driver.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c
index 601681fab..985404f86 100644
--- a/scd/ccid-driver.c
+++ b/scd/ccid-driver.c
@@ -1976,11 +1976,12 @@ bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length,
       if (rc < 0)
         {
           DEBUGOUT_1 ("usb_bulk_read error: %s\n", libusb_error_name (rc));
-          if (rc == EAGAIN && eagain_retries++ < 3)
+          if (rc == LIBUSB_ERROR_NO_DEVICE)
             {
-              my_sleep (1);
-              goto retry;
+              handle->enodev_seen = 1;
+              return CCID_DRIVER_ERR_NO_READER;
             }
+
           return CCID_DRIVER_ERR_CARD_IO_ERROR;
         }
       if (msglen < 0)