diff --git a/scd/apdu.c b/scd/apdu.c index b8bfceca0..541dd05fa 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -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; } diff --git a/scd/command.c b/scd/command.c index be0597718..5ef6540da 100644 --- a/scd/command.c +++ b/scd/command.c @@ -414,18 +414,19 @@ get_reader_slot (void) int no_service_flag; ss->slot = apdu_open_reader (opt.reader_port, &no_service_flag); - /* 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; - } - 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; + } } /* Return the slot_table index. */