1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-11-09 21:28:51 +01:00

scd: Retry command SERIALNO for an inactive card.

* scd/command.c (cmd_serialno): Retry once for an inactive card.
This commit is contained in:
Werner Koch 2011-12-12 21:02:54 +01:00 committed by NIIBE Yutaka
parent 1e0a9498fe
commit 2d052240fb

View File

@ -518,8 +518,10 @@ cmd_serialno (assuan_context_t ctx, char *line)
char *serial_and_stamp; char *serial_and_stamp;
char *serial; char *serial;
time_t stamp; time_t stamp;
int retries = 0;
/* Clear the remove flag so that the open_card is able to reread it. */ /* Clear the remove flag so that the open_card is able to reread it. */
retry:
if (!reader_disabled && ctrl->server_local->card_removed) if (!reader_disabled && ctrl->server_local->card_removed)
{ {
if ( IS_LOCKED (ctrl) ) if ( IS_LOCKED (ctrl) )
@ -528,7 +530,12 @@ cmd_serialno (assuan_context_t ctx, char *line)
} }
if ((rc = open_card (ctrl, *line? line:NULL))) if ((rc = open_card (ctrl, *line? line:NULL)))
{
/* In case of an inactive card, retry once. */
if (gpg_err_code (rc) == GPG_ERR_CARD_RESET && retries++ < 1)
goto retry;
return rc; return rc;
}
rc = app_get_serial_and_stamp (ctrl->app_ctx, &serial, &stamp); rc = app_get_serial_and_stamp (ctrl->app_ctx, &serial, &stamp);
if (rc) if (rc)