aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2019-05-23 01:15:18 +0000
committerWerner Koch <[email protected]>2019-05-27 07:01:55 +0000
commit9ccdd59e4e1e0b0e3b03b288f52f3c71e86a04dd (patch)
tree256d859a8c05cc47de2160779845a18661941dba
parentgpg: Do not bail on an invalid packet in the local keyring. (diff)
downloadgnupg-9ccdd59e4e1e0b0e3b03b288f52f3c71e86a04dd.tar.gz
gnupg-9ccdd59e4e1e0b0e3b03b288f52f3c71e86a04dd.zip
agent: Stop scdaemon after reload when disable_scdaemon.
* agent/call-scd.c (agent_card_killscd): New. * agent/gpg-agent.c (agent_sighup_action): Call agent_card_killscd. -- GnuPG-bug-id: 4326 Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--agent/agent.h1
-rw-r--r--agent/call-scd.c9
-rw-r--r--agent/gpg-agent.c3
3 files changed, 13 insertions, 0 deletions
diff --git a/agent/agent.h b/agent/agent.h
index 58dd7df85..e934ec8db 100644
--- a/agent/agent.h
+++ b/agent/agent.h
@@ -597,6 +597,7 @@ int agent_card_scd (ctrl_t ctrl, const char *cmdline,
int (*getpin_cb)(void *, const char *,
const char *, char*, size_t),
void *getpin_cb_arg, void *assuan_context);
+void agent_card_killscd (void);
/*-- learncard.c --*/
diff --git a/agent/call-scd.c b/agent/call-scd.c
index 51d9abd70..6438693af 100644
--- a/agent/call-scd.c
+++ b/agent/call-scd.c
@@ -1324,3 +1324,12 @@ agent_card_scd (ctrl_t ctrl, const char *cmdline,
return unlock_scd (ctrl, 0);
}
+
+void
+agent_card_killscd (void)
+{
+ if (primary_scd_ctx == NULL)
+ return;
+ assuan_transact (primary_scd_ctx, "KILLSCD",
+ NULL, NULL, NULL, NULL, NULL, NULL);
+}
diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c
index ffd85d196..87656a1f3 100644
--- a/agent/gpg-agent.c
+++ b/agent/gpg-agent.c
@@ -2434,6 +2434,9 @@ agent_sighup_action (void)
"pinentry" binary that one can be used in case the
"pinentry-basic" fallback was in use. */
gnupg_module_name_flush_some ();
+
+ if (opt.disable_scdaemon)
+ agent_card_killscd ();
}