summaryrefslogtreecommitdiffstats
path: root/sm
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2004-12-17 15:36:16 +0100
committerWerner Koch <wk@gnupg.org>2004-12-17 15:36:16 +0100
commit0ccb120f68954cead774b821b52fbd0d9d5eb65c (patch)
tree5daf50e8571f7052a06849a1e9bf93b0fd19bd9d /sm
parent(lookup_status_cb): Send progress messages (diff)
downloadgnupg2-0ccb120f68954cead774b821b52fbd0d9d5eb65c.tar.xz
gnupg2-0ccb120f68954cead774b821b52fbd0d9d5eb65c.zip
* call-dirmngr.c (isvalid_status_cb, lookup_status_cb)
(run_command_status_cb): Return cancel status if gpgsm_status returned an error. * server.c (gpgsm_status, gpgsm_status2) (gpgsm_status_with_err_code): Return an error code. (gpgsm_status2): Always call va_end().
Diffstat (limited to 'sm')
-rw-r--r--sm/ChangeLog10
-rw-r--r--sm/call-dirmngr.c9
-rw-r--r--sm/gpgsm.h8
-rw-r--r--sm/server.c23
4 files changed, 33 insertions, 17 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog
index b33ed5409..b28c45af8 100644
--- a/sm/ChangeLog
+++ b/sm/ChangeLog
@@ -1,3 +1,13 @@
+2004-12-17 Werner Koch <wk@g10code.com>
+
+ * call-dirmngr.c (isvalid_status_cb, lookup_status_cb)
+ (run_command_status_cb): Return cancel status if gpgsm_status
+ returned an error.
+
+ * server.c (gpgsm_status, gpgsm_status2)
+ (gpgsm_status_with_err_code): Return an error code.
+ (gpgsm_status2): Always call va_end().
+
2004-12-15 Werner Koch <wk@g10code.com>
* call-dirmngr.c (lookup_status_cb): Send progress messages
diff --git a/sm/call-dirmngr.c b/sm/call-dirmngr.c
index 44246daa6..d00a53db5 100644
--- a/sm/call-dirmngr.c
+++ b/sm/call-dirmngr.c
@@ -355,7 +355,8 @@ isvalid_status_cb (void *opaque, const char *line)
{
for (line += 8; *line == ' '; line++)
;
- gpgsm_status (parm->ctrl, STATUS_PROGRESS, line);
+ if (gpgsm_status (parm->ctrl, STATUS_PROGRESS, line))
+ return ASSUAN_Canceled;
}
}
else if (!strncmp (line, "ONLY_VALID_IF_CERT_VALID", 24)
@@ -625,7 +626,8 @@ lookup_status_cb (void *opaque, const char *line)
{
for (line += 8; *line == ' '; line++)
;
- gpgsm_status (parm->ctrl, STATUS_PROGRESS, line);
+ if (gpgsm_status (parm->ctrl, STATUS_PROGRESS, line))
+ return ASSUAN_Canceled;
}
}
else if (!strncmp (line, "TRUNCATED", 9) && (line[9]==' ' || !line[9]))
@@ -760,7 +762,8 @@ run_command_status_cb (void *opaque, const char *line)
{
for (line += 8; *line == ' '; line++)
;
- gpgsm_status (ctrl, STATUS_PROGRESS, line);
+ if (gpgsm_status (ctrl, STATUS_PROGRESS, line))
+ return ASSUAN_Canceled;
}
}
return 0;
diff --git a/sm/gpgsm.h b/sm/gpgsm.h
index faa6e8b5c..fe4e93910 100644
--- a/sm/gpgsm.h
+++ b/sm/gpgsm.h
@@ -171,10 +171,10 @@ void gpgsm_init_default_ctrl (struct server_control_s *ctrl);
/*-- server.c --*/
void gpgsm_server (certlist_t default_recplist);
-void gpgsm_status (ctrl_t ctrl, int no, const char *text);
-void gpgsm_status2 (ctrl_t ctrl, int no, ...);
-void gpgsm_status_with_err_code (ctrl_t ctrl, int no, const char *text,
- gpg_err_code_t ec);
+gpg_error_t gpgsm_status (ctrl_t ctrl, int no, const char *text);
+gpg_error_t gpgsm_status2 (ctrl_t ctrl, int no, ...);
+gpg_error_t gpgsm_status_with_err_code (ctrl_t ctrl, int no, const char *text,
+ gpg_err_code_t ec);
/*-- fingerprint --*/
char *gpgsm_get_fingerprint (ksba_cert_t cert, int algo,
diff --git a/sm/server.c b/sm/server.c
index e39c78a8d..7bfd3fc20 100644
--- a/sm/server.c
+++ b/sm/server.c
@@ -964,18 +964,19 @@ get_status_string ( int no )
}
-void
+gpg_error_t
gpgsm_status2 (CTRL ctrl, int no, ...)
{
+ gpg_error_t err = 0;
va_list arg_ptr;
const char *text;
va_start (arg_ptr, no);
- if (ctrl->no_server)
+ if (ctrl->no_server && ctrl->status_fd == -1)
+ ; /* No status wanted. */
+ else if (ctrl->no_server)
{
- if (ctrl->status_fd == -1)
- return; /* no status wanted */
if (!statusfp)
{
if (ctrl->status_fd == 1)
@@ -1030,19 +1031,21 @@ gpgsm_status2 (CTRL ctrl, int no, ...)
*p++ = *text++;
}
*p = 0;
- assuan_write_status (ctx, get_status_string (no), buf);
+ err = map_assuan_err (assuan_write_status (ctx,
+ get_status_string (no), buf));
}
va_end (arg_ptr);
+ return err;
}
-void
+gpg_error_t
gpgsm_status (CTRL ctrl, int no, const char *text)
{
- gpgsm_status2 (ctrl, no, text, NULL);
+ return gpgsm_status2 (ctrl, no, text, NULL);
}
-void
+gpg_error_t
gpgsm_status_with_err_code (CTRL ctrl, int no, const char *text,
gpg_err_code_t ec)
{
@@ -1050,9 +1053,9 @@ gpgsm_status_with_err_code (CTRL ctrl, int no, const char *text,
sprintf (buf, "%u", (unsigned int)ec);
if (text)
- gpgsm_status2 (ctrl, no, text, buf, NULL);
+ return gpgsm_status2 (ctrl, no, text, buf, NULL);
else
- gpgsm_status2 (ctrl, no, buf, NULL);
+ return gpgsm_status2 (ctrl, no, buf, NULL);
}
#if 0