mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
tests: Use gpgconf to stop the agent.
* tests/openpgp/defs.scm (stop-agent): Swap order of actions. Kill all daemons using gpgconf. * tools/gpgconf.c (main) <aRemoveSocketDir>: Try to remove known socketfails on rmdir failure. Do no fail for ENONET. -- Killing all daemons is not really required but it does not harm to be prepared for the future. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
178b6314ab
commit
2c9d9ac55e
@ -453,10 +453,12 @@
|
||||
"|--debug-quick-random")
|
||||
/bye)))
|
||||
|
||||
;; Stop the agent and remove the socket dir.
|
||||
;; Stop the agent and other daemons and remove the socket dir.
|
||||
(define (stop-agent)
|
||||
(log "Stopping gpg-agent...")
|
||||
(call-check `(,(tool 'gpgconf) --kill all))
|
||||
(catch (log "Warning: Removing socket directory failed.")
|
||||
(call-popen `(,(tool 'gpgconf) --remove-socketdir) ""))
|
||||
(call-check `(,(tool 'gpg-connect-agent) --verbose --no-autostart
|
||||
killagent /bye)))
|
||||
(call-popen `(,(tool 'gpgconf) --remove-socketdir) "")))
|
||||
|
||||
|
||||
;; end
|
||||
|
@ -456,6 +456,7 @@ query_swdb (estream_t out, const char *name, const char *current_version)
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
gpg_error_t err;
|
||||
ARGPARSE_ARGS pargs;
|
||||
const char *fname;
|
||||
int no_more_options = 0;
|
||||
@ -755,7 +756,42 @@ main (int argc, char **argv)
|
||||
else if (opt.dry_run)
|
||||
;
|
||||
else if (rmdir (socketdir))
|
||||
gc_error (1, errno, "error removing '%s'", socketdir);
|
||||
{
|
||||
/* If the director is not empty we first try to delet
|
||||
* socket files. */
|
||||
err = gpg_error_from_syserror ();
|
||||
if (gpg_err_code (err) == GPG_ERR_ENOTEMPTY
|
||||
|| gpg_err_code (err) == GPG_ERR_EEXIST)
|
||||
{
|
||||
static const char * const names[] = {
|
||||
GPG_AGENT_SOCK_NAME,
|
||||
GPG_AGENT_EXTRA_SOCK_NAME,
|
||||
GPG_AGENT_BROWSER_SOCK_NAME,
|
||||
GPG_AGENT_SSH_SOCK_NAME,
|
||||
SCDAEMON_SOCK_NAME,
|
||||
DIRMNGR_SOCK_NAME
|
||||
};
|
||||
int i;
|
||||
char *p;
|
||||
|
||||
for (i=0; i < DIM(names); i++)
|
||||
{
|
||||
p = strconcat (socketdir , "/", names[i], NULL);
|
||||
if (p)
|
||||
gnupg_remove (p);
|
||||
xfree (p);
|
||||
}
|
||||
if (rmdir (socketdir))
|
||||
gc_error (1, 0, "error removing '%s': %s",
|
||||
socketdir, gpg_strerror (err));
|
||||
}
|
||||
else if (gpg_err_code (err) == GPG_ERR_ENOENT)
|
||||
gc_error (0, 0, "warning: removing '%s' failed: %s",
|
||||
socketdir, gpg_strerror (err));
|
||||
else
|
||||
gc_error (1, 0, "error removing '%s': %s",
|
||||
socketdir, gpg_strerror (err));
|
||||
}
|
||||
|
||||
xfree (socketdir);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user