scd fixes on error.
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 12 Jun 2012 05:51:52 +0000 (14:51 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Mon, 25 Jun 2012 01:04:22 +0000 (10:04 +0900)
* scd/apdu.c (open_pcsc_reader_wrapped): Show error number.

* scd/command.c (get_reader_slot): Return -1 on error.

scd/apdu.c
scd/command.c

index b8bfcec..541dd05 100644 (file)
@@ -1728,7 +1728,8 @@ open_pcsc_reader_wrapped (const char *portstr)
                        | (msgbuf[7] << 8 ) | msgbuf[8]);
   if (err)
     {
-      log_error ("PC/SC OPEN failed: %s\n", pcsc_error_string (err));
+      log_error ("PC/SC OPEN failed: %s (0x%08x)\n",
+                pcsc_error_string (err), err);
       /*sw = pcsc_error_to_sw (err);*/
       goto command_failed;
     }
index be05977..5ef6540 100644 (file)
@@ -414,18 +414,19 @@ get_reader_slot (void)
       int no_service_flag;
       ss->slot = apdu_open_reader (opt.reader_port, &no_service_flag);
 
+      if (no_service_flag)
+        {
+          log_info ("no card services - disabling scdaemon\n");
+          reader_disabled = 1;
+        }
+
       /* If we still don't have a slot, we have no readers.
         Invalidate for now until a reader is attached. */
       if(ss->slot == -1)
        {
          ss->valid = 0;
+         return -1;
        }
-
-      if (no_service_flag)
-        {
-          log_info ("no card services - disabling scdaemon\n");
-          reader_disabled = 1;
-        }
     }
 
   /* Return the slot_table index.  */