agent: Stop scdaemon after reload when disable_scdaemon.
authorNIIBE Yutaka <gniibe@fsij.org>
Thu, 23 May 2019 01:15:18 +0000 (10:15 +0900)
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Thu, 22 Aug 2019 19:11:59 +0000 (20:11 +0100)
* 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 <gniibe@fsij.org>
(cherry picked from commit 9ccdd59e4e1e0b0e3b03b288f52f3c71e86a04dd)

Gbp-Pq: Topic from-2.2.16
Gbp-Pq: Name agent-Stop-scdaemon-after-reload-when-disable_scdaemon.patch

agent/agent.h
agent/call-scd.c
agent/gpg-agent.c

index b07ea578f70f3bd5d490e6c2ed31d833428b4a45..f0477574891e519476a5505817dad85f912734d8 100644 (file)
@@ -598,6 +598,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 --*/
index e852c0d9e8a2b875c3e13bb921f79ece1d9be5b6..ee69bb4c3d4093e2ca59d1b9abaf8800884dfe83 100644 (file)
@@ -1326,3 +1326,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);
+}
index d68b5ad8da0090ad82b6144d62159aaf13cf789a..16aa0d43ceea7ec6c2df6201de6757bf892fb509 100644 (file)
@@ -2452,6 +2452,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 ();
 }