summaryrefslogtreecommitdiff
path: root/plugins/gpg-agent
diff options
context:
space:
mode:
authorRobby Russell <robby@planetargon.com>2013-06-25 09:07:49 -0700
committerRobby Russell <robby@planetargon.com>2013-06-25 09:07:49 -0700
commit354211f5ac1c2367916552f12d4798c417187e83 (patch)
tree5c61934a087eed4761d1272f7d5f880a406c63e4 /plugins/gpg-agent
parent2b88b0d9926be3d178c9d70578c7d019d26fd3b9 (diff)
parent64fc125eba09f48f17184cde4403267c1cb16999 (diff)
downloadzsh-354211f5ac1c2367916552f12d4798c417187e83.tar.gz
zsh-354211f5ac1c2367916552f12d4798c417187e83.tar.bz2
zsh-354211f5ac1c2367916552f12d4798c417187e83.zip
Merge pull request #1904 from oohlaf/gpg-agent-fix
Prevent starting multiple gpg-agents
Diffstat (limited to 'plugins/gpg-agent')
-rw-r--r--plugins/gpg-agent/gpg-agent.plugin.zsh26
1 files changed, 17 insertions, 9 deletions
diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh
index 109af44c8..4071334cb 100644
--- a/plugins/gpg-agent/gpg-agent.plugin.zsh
+++ b/plugins/gpg-agent/gpg-agent.plugin.zsh
@@ -14,16 +14,24 @@ function start_agent_withssh {
export SSH_AGENT_PID
}
-# source settings of old agent, if applicable
-if [ -f "${GPG_ENV}" ]; then
- . ${GPG_ENV} > /dev/null
-fi
+# check if another agent is running
+if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
+ # source settings of old agent, if applicable
+ if [ -f "${GPG_ENV}" ]; then
+ . ${GPG_ENV} > /dev/null
+ fi
-# check for existing ssh-agent
-if ssh-add -l > /dev/null 2> /dev/null; then
- start_agent_nossh;
-else
- start_agent_withssh;
+ # check again if another agent is running using the newly sourced settings
+ if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
+ # check for existing ssh-agent
+ if ssh-add -l > /dev/null 2> /dev/null; then
+ # ssh-agent running, start gpg-agent without ssh support
+ start_agent_nossh;
+ else
+ # otherwise start gpg-agent with ssh support
+ start_agent_withssh;
+ fi
+ fi
fi
GPG_TTY=$(tty)