diff --git a/tools/gpgconf-comp.c b/tools/gpgconf-comp.c index 77139bbae..8c47b2e5e 100644 --- a/tools/gpgconf-comp.c +++ b/tools/gpgconf-comp.c @@ -1142,7 +1142,7 @@ dirmngr_runtime_change (int killflag) /* Launch the gpg-agent or the dirmngr if not already running. */ -void +gpg_error_t gc_component_launch (int component) { gpg_error_t err; @@ -1176,6 +1176,7 @@ gc_component_launch (int component) " NOP", gpg_strerror (err)); gnupg_release_process (pid); + return err; } diff --git a/tools/gpgconf.c b/tools/gpgconf.c index 31804f50e..423a66c71 100644 --- a/tools/gpgconf.c +++ b/tools/gpgconf.c @@ -281,9 +281,17 @@ main (int argc, char **argv) exit (1); } else if (cmd == aLaunch) - gc_component_launch (idx); + { + if (gc_component_launch (idx)) + exit (1); + } else - gc_component_kill (idx); + { + /* We don't error out if the kill failed because this + command should do nothing if the component is not + running. */ + gc_component_kill (idx); + } } break; diff --git a/tools/gpgconf.h b/tools/gpgconf.h index 0286c2737..d63833dd9 100644 --- a/tools/gpgconf.h +++ b/tools/gpgconf.h @@ -45,7 +45,7 @@ char *gc_percent_escape (const char *src); void gc_error (int status, int errnum, const char *fmt, ...); /* Launch given component. */ -void gc_component_launch (int component); +gpg_error_t gc_component_launch (int component); /* Kill given component. */ void gc_component_kill (int component);