From 8690d9fd3581756155ba9bfb6e1577f0b38bc710 Mon Sep 17 00:00:00 2001 From: Chris Fleming Date: Mon, 27 Nov 2017 18:15:32 +0000 Subject: [PATCH] Always try and start gpg-agent, with --use-standard-socket it will try and use a standard socket directory. It won't start multiple agents if agent is already running. In addition, XDG_RUNTIME_DIR isn't always set --- plugins/gpg-agent/gpg-agent.plugin.zsh | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh index 69e239ccf..10c4027eb 100644 --- a/plugins/gpg-agent/gpg-agent.plugin.zsh +++ b/plugins/gpg-agent/gpg-agent.plugin.zsh @@ -1,14 +1,16 @@ -# Enable gpg-agent if it is not running -GPG_AGENT_SOCKET="${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh" -if [ ! -S $GPG_AGENT_SOCKET ]; then - gpg-agent --daemon >/dev/null 2>&1 - export GPG_TTY=$(tty) -fi +# Enable gpg-agent if it is not running- +# --use-standard-socket will work from version 2 upwards +# If already running then new agent won't be started. + +gpg-agent --daemon --use-standard-socket >/dev/null 2>&1 +export GPG_TTY=$(tty) # Set SSH to use gpg-agent if it is configured to do so GNUPGCONFIG="${GNUPGHOME:-"$HOME/.gnupg"}/gpg-agent.conf" if [ -r "$GNUPGCONFIG" ] && grep -q enable-ssh-support "$GNUPGCONFIG"; then - unset SSH_AGENT_PID - export SSH_AUTH_SOCK=$GPG_AGENT_SOCKET + if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then + export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" + unset SSH_AGENT_PID + fi fi