aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2015-11-27 11:21:45 +0000
committerWerner Koch <[email protected]>2015-11-27 11:21:45 +0000
commitda5a232199ef93be219e933a7eaf4ccfc6d24d61 (patch)
treeef4f6aec7b4196fa48c9313bbf122b8183b9f5e2
parentg13: Fix commit 1a045b13. (diff)
downloadgnupg-da5a232199ef93be219e933a7eaf4ccfc6d24d61.tar.gz
gnupg-da5a232199ef93be219e933a7eaf4ccfc6d24d61.zip
dirmngr: Allow testing for a running Tor via "getinfo tor".
* dirmngr/server.c (cmd_getinfo): Print an S line if Tor is not running. Signed-off-by: Werner Koch <[email protected]>
-rw-r--r--dirmngr/server.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/dirmngr/server.c b/dirmngr/server.c
index 8954ba87b..e08afd4a0 100644
--- a/dirmngr/server.c
+++ b/dirmngr/server.c
@@ -2123,8 +2123,25 @@ cmd_getinfo (assuan_context_t ctx, char *line)
{
if (opt.use_tor)
{
- err = 0;
- assuan_set_okay_line (ctx, " - Tor mode is enabled");
+#if ASSUAN_VERSION_NUMBER >= 0x020402
+ /* Check whether we can connect to the proxy. We use a
+ special feature introduced with libassuan 2.4.2. */
+ int sock = assuan_sock_connect_byname (NULL, 0, 0, NULL,
+ ASSUAN_SOCK_TOR);
+ if (sock == ASSUAN_INVALID_FD)
+ {
+ err = assuan_write_status
+ (ctx, "NO_TOR",
+ errno == ECONNREFUSED? "Tor not running" : strerror (errno));
+ }
+ else
+ {
+ assuan_sock_close (sock);
+ err = 0;
+ }
+ if (!err)
+#endif /* Libassuan >= 2.4.2 */
+ assuan_set_okay_line (ctx, "- Tor mode is enabled");
}
else
err = set_error (GPG_ERR_FALSE, "Tor mode is NOT enabled");