diff options
author | Werner Koch <[email protected]> | 2016-10-04 09:23:18 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-10-04 15:11:43 +0000 |
commit | dc059af1ff007842e2633e686c87d05daf1d45e3 (patch) | |
tree | ba8ac14d80a1fa1b866b820faca05fb9b7970423 | |
parent | agent: Implement --supervised command (for systemd, etc). (diff) | |
download | gnupg-dc059af1ff007842e2633e686c87d05daf1d45e3.tar.gz gnupg-dc059af1ff007842e2633e686c87d05daf1d45e3.zip |
agent: Adjust supervised mode for the new default socket names.
* agent/gpg-agent.c (main): In supervised mode do not provide default
socket names. Unset DISPLAY and INSIDE_EMACS. Use log_error and
agent_exit.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to '')
-rw-r--r-- | agent/gpg-agent.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index 9221dc398..3e938f59c 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -1244,10 +1244,10 @@ main (int argc, char **argv ) agent_exit (0); } - if (! opt.extra_socket) - { - opt.extra_socket = 1; - } + if (is_supervised) + ; + else if (!opt.extra_socket) + opt.extra_socket = 1; else if (socket_name_extra && (!strcmp (socket_name_extra, "none") || !strcmp (socket_name_extra, "/dev/null"))) @@ -1257,10 +1257,10 @@ main (int argc, char **argv ) socket_name_extra = NULL; } - if (! opt.browser_socket) - { - opt.browser_socket = 1; - } + if (is_supervised) + ; + else if (!opt.browser_socket) + opt.browser_socket = 1; else if (socket_name_browser && (!strcmp (socket_name_browser, "none") || !strcmp (socket_name_browser, "/dev/null"))) @@ -1429,11 +1429,19 @@ main (int argc, char **argv ) log_info ("%s %s starting in supervised mode.\n", strusage(11), strusage(13) ); + /* See below on why we remove certain envvars. */ +#ifndef HAVE_W32_SYSTEM + if (!opt.keep_display) + gnupg_unsetenv ("DISPLAY"); +#endif + gnupg_unsetenv ("INSIDE_EMACS"); + + /* Virtually create the sockets. */ map_supervised_sockets (&fd, &fd_extra, &fd_browser, &fd_ssh); if (fd == GNUPG_INVALID_FD) { - log_fatal ("no standard socket provided\n"); - exit (1); + log_error ("no standard socket provided\n"); + agent_exit (1); } /* record socket names where possible: */ socket_name = get_socket_path (fd); @@ -1456,8 +1464,8 @@ main (int argc, char **argv ) log_info ("no saved signal mask\n"); #endif /*HAVE_SIGPROCMASK*/ - log_debug ("FDs: std: %d extra: %d browser: %d ssh: %d\n", - fd, fd_extra, fd_browser, fd_ssh); + log_info ("listening on: std=%d extra=%d browser=%d ssh=%d\n", + fd, fd_extra, fd_browser, fd_ssh); handle_connections (fd, fd_extra, fd_browser, fd_ssh); assuan_sock_close (fd); } |