From 29af48840f1f5d39fae8ad7942f3676936134996 Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Sat, 9 Jul 2011 08:25:22 -0400 Subject: Fixed gpg-agent SCD inquire command cancellation. Need to send the CANCEL command back to scdaemon otherwise the next SCD command will fail. --- agent/ChangeLog | 5 +++++ agent/call-scd.c | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/agent/ChangeLog b/agent/ChangeLog index e1becac51..25eabbc15 100644 --- a/agent/ChangeLog +++ b/agent/ChangeLog @@ -1,3 +1,8 @@ +2011-07-09 Ben Kibbey + + * call-scd.c (agent_card_scd): Send the CANCEL command back to SCD + when the SCD command is cancelled from the client. + 2011-07-22 Werner Koch * command-ssh.c (ssh_receive_key): Do not init comment to an empty diff --git a/agent/call-scd.c b/agent/call-scd.c index 710589f72..1ffb1239e 100644 --- a/agent/call-scd.c +++ b/agent/call-scd.c @@ -1175,6 +1175,19 @@ agent_card_scd (ctrl_t ctrl, const char *cmdline, pass_data_thru, assuan_context, inq_needpin, &inqparm, pass_status_thru, assuan_context); + if (gpg_err_code(rc) == GPG_ERR_ASS_CANCELED) + { + rc = assuan_write_line(ctrl->scd_local->ctx, "CAN"); + if (!rc) { + char *line; + size_t len; + + rc = assuan_read_line(ctrl->scd_local->ctx, &line, &len); + if (!rc) + rc = gpg_error(GPG_ERR_ASS_CANCELED); + } + } + assuan_set_flag (ctrl->scd_local->ctx, ASSUAN_CONVEY_COMMENTS, saveflag); if (rc) { -- cgit v1.2.3