If its environment variables exist and its socket is in the right place,
or we have a session bus and the keyring daemon is listening on it,
then start it up.
# --- Start an ssh authentication agent ---
# --- Start an ssh authentication agent ---
-if [ "$DBUS_SESSION_BUS_ADDRESS" ] &&
- dbus-send --session --print-reply --dest=org.freedesktop.DBus \
- / org.freedesktop.DBus.GetNameOwner string:org.gnome.keyring \
- >/dev/null 2>/dev/null &&
- stuff=$(gnome-keyring-daemon -s 2>/dev/null)
+if { { [ "$GNOME_KEYRING_CONTROL" ] &&
+ [ -s "$GNOME_KEYRING_CONTROL" ]; } ||
+ { [ "$DBUS_SESSION_BUS_ADDRESS" ] &&
+ dbus-send --session --print-reply --dest=org.freedesktop.DBus \
+ / org.freedesktop.DBus.GetNameOwner string:org.gnome.keyring \
+ >/dev/null 2>/dev/null; }; } &&
+ stuff=$(gnome-keyring-daemon -s -c ssh 2>/dev/null)
- export GNOME_KEYRING_CONTROL SSH_AUTH_SOCK
fi
eval `start-ssh-agent -b`
fi
eval `start-ssh-agent -b`