mirror of
git://git.gnupg.org/gnupg.git
synced 2024-11-12 21:58:50 +01:00
Fix problem with unplugged card readers.
From Grant Olsons's mail to gnupg-devel@: This is three-quarters NIIBE and one-quarter me, but I though it would be easier to have a single complete patch that applies to STABLE-BRANCH-2-0 than two patches floating around. This is basically NIIBE Yatuka's patch here: http://lists.gnupg.org/pipermail/gnupg-devel/2010-November/025828.html Plus another check that closes down the reader explicitly if we get a SW_HOST_NO_READER error, so that an unplugged reader doesn't hold onto the first slot, preventing us from getting to the active plugged reader.
This commit is contained in:
parent
abceb05d54
commit
cb2f55e9ed
1
THANKS
1
THANKS
@ -92,6 +92,7 @@ Geoff Keating geoffk at ozemail.com.au
|
|||||||
Georg Schwarz georg.schwarz at iname.com
|
Georg Schwarz georg.schwarz at iname.com
|
||||||
Giampaolo Tomassoni g.tomassoni at libero.it
|
Giampaolo Tomassoni g.tomassoni at libero.it
|
||||||
Gilbert Fernandes gilbert_fernandes at hotmail.com
|
Gilbert Fernandes gilbert_fernandes at hotmail.com
|
||||||
|
Grant Olson kgo at grant-olson net
|
||||||
Greg Louis glouis at dynamicro.on.ca
|
Greg Louis glouis at dynamicro.on.ca
|
||||||
Greg Troxel gdt at ir.bbn.com
|
Greg Troxel gdt at ir.bbn.com
|
||||||
Gregory Steuck steuck at iname.com
|
Gregory Steuck steuck at iname.com
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2011-01-25 NIIBE Yutaka <gniibe@fsij.org>,
|
||||||
|
Grant Olson <kgo@grant-olson.net> (wk)
|
||||||
|
|
||||||
|
* command.c (do_reset, get_reader_slot)
|
||||||
|
(update_reader_status_file): Fix handling of the VALID flag for
|
||||||
|
unplugged readers.
|
||||||
|
|
||||||
2010-03-17 Werner Koch <wk@g10code.com>
|
2010-03-17 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* command.c (open_card): Return GPG_ERR_NOT_OPERATIONAL if no
|
* command.c (open_card): Return GPG_ERR_NOT_OPERATIONAL if no
|
||||||
|
@ -309,7 +309,7 @@ do_reset (ctrl_t ctrl, int send_reset)
|
|||||||
{
|
{
|
||||||
if (apdu_reset (slot))
|
if (apdu_reset (slot))
|
||||||
{
|
{
|
||||||
slot_table[slot].reset_failed = 1;
|
slot_table[slot].valid = 0;
|
||||||
}
|
}
|
||||||
application_notify_card_reset (slot);
|
application_notify_card_reset (slot);
|
||||||
}
|
}
|
||||||
@ -401,6 +401,14 @@ get_reader_slot (void)
|
|||||||
{
|
{
|
||||||
int no_service_flag;
|
int no_service_flag;
|
||||||
ss->slot = apdu_open_reader (opt.reader_port, &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)
|
if (no_service_flag)
|
||||||
{
|
{
|
||||||
log_info ("no card services - disabling scdaemon\n");
|
log_info ("no card services - disabling scdaemon\n");
|
||||||
@ -2192,6 +2200,8 @@ update_reader_status_file (int set_card_removed_flag)
|
|||||||
if (sw_apdu == SW_HOST_NO_READER)
|
if (sw_apdu == SW_HOST_NO_READER)
|
||||||
{
|
{
|
||||||
/* Most likely the _reader_ has been unplugged. */
|
/* Most likely the _reader_ has been unplugged. */
|
||||||
|
apdu_close_reader (ss->slot);
|
||||||
|
ss->valid = 0;
|
||||||
status = 0;
|
status = 0;
|
||||||
changed = ss->changed;
|
changed = ss->changed;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user