aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kbx/backend-support.c12
-rw-r--r--kbx/kbxserver.c22
-rw-r--r--kbx/keyboxd.h2
3 files changed, 25 insertions, 11 deletions
diff --git a/kbx/backend-support.c b/kbx/backend-support.c
index 1821129ea..7ab63985c 100644
--- a/kbx/backend-support.c
+++ b/kbx/backend-support.c
@@ -173,18 +173,18 @@ be_return_pubkey (ctrl_t ctrl, const void *buffer, size_t buflen,
char hexubid[2*UBID_LEN+1];
bin2hex (ubid, UBID_LEN, hexubid);
- err = status_printf (ctrl, "PUBKEY_INFO", "%d %s %c%c %d %d",
- pubkey_type, hexubid,
- is_ephemeral? 'e':'-',
- is_revoked? 'r':'-',
- uid_no, pk_no);
+ err = kbxd_status_printf (ctrl, "PUBKEY_INFO", "%d %s %c%c %d %d",
+ pubkey_type, hexubid,
+ is_ephemeral? 'e':'-',
+ is_revoked? 'r':'-',
+ uid_no, pk_no);
if (err)
goto leave;
if (ctrl->no_data_return)
err = 0;
else
- err = kbxd_write_data_line(ctrl, buffer, buflen);
+ err = kbxd_write_data_line (ctrl, buffer, buflen);
leave:
return err;
diff --git a/kbx/kbxserver.c b/kbx/kbxserver.c
index fa04ccf64..990840980 100644
--- a/kbx/kbxserver.c
+++ b/kbx/kbxserver.c
@@ -173,6 +173,23 @@ kbxd_writen (estream_t fp, const void *buffer, size_t length)
return err;
}
+/* This status functions expects a printf style format string. */
+gpg_error_t
+kbxd_status_printf (ctrl_t ctrl, const char *keyword, const char *format, ...)
+{
+ gpg_error_t err;
+ va_list arg_ptr;
+ assuan_context_t ctx = get_assuan_ctx_from_ctrl (ctrl);
+
+ if (!ctx) /* Oops - no assuan context. */
+ return gpg_error (GPG_ERR_NOT_PROCESSED);
+
+ va_start (arg_ptr, format);
+ err = vprint_assuan_status (ctx, keyword, format, arg_ptr);
+ va_end (arg_ptr);
+ return err;
+}
+
/* A wrapper around assuan_send_data which makes debugging the output
* in verbose mode easier. It also takes CTRL as argument. */
@@ -975,10 +992,6 @@ kbxd_start_command_handler (ctrl_t ctrl, gnupg_fd_t fd, unsigned int session_id)
ctrl->server_local->next_session = session_list;
session_list = ctrl->server_local;
-
- /* The next call enable the use of status_printf. */
- set_assuan_context_func (get_assuan_ctx_from_ctrl);
-
for (;;)
{
rc = assuan_accept (ctx);
@@ -1029,7 +1042,6 @@ kbxd_start_command_handler (ctrl_t ctrl, gnupg_fd_t fd, unsigned int session_id)
assuan_close_output_fd (ctx);
- set_assuan_context_func (NULL);
ctrl->server_local->assuan_ctx = NULL;
assuan_release (ctx);
diff --git a/kbx/keyboxd.h b/kbx/keyboxd.h
index 3a80f9b64..3fea6addd 100644
--- a/kbx/keyboxd.h
+++ b/kbx/keyboxd.h
@@ -171,6 +171,8 @@ void kbxd_sighup_action (void);
/*-- kbxserver.c --*/
+gpg_error_t kbxd_status_printf (ctrl_t ctrl, const char *keyword,
+ const char *format, ...);
gpg_error_t kbxd_write_data_line (ctrl_t ctrl,
const void *buffer_arg, size_t size);
void kbxd_start_command_handler (ctrl_t, gnupg_fd_t, unsigned int);