diff options
| author | Werner Koch <[email protected]> | 2019-06-13 06:40:33 +0000 |
|---|---|---|
| committer | Werner Koch <[email protected]> | 2019-06-13 06:40:33 +0000 |
| commit | 28e620fa169dcbfc2301ae9bea58ebe3ccc3504a (patch) | |
| tree | 28be2b60116d54a3ba83f8297332bf56e5561728 /src/engine-gpgsm.c | |
| parent | core: Use fully correct command args for gpg --verify. (diff) | |
| download | gpgme-28e620fa169dcbfc2301ae9bea58ebe3ccc3504a.tar.gz gpgme-28e620fa169dcbfc2301ae9bea58ebe3ccc3504a.zip | |
core: Refactor the wait code utilizing the new fdtable.
* src/fdtable.c, src/fdtable.h: Largely extend.
* src/wait-global.c, src/wait-private.c, src/wait-user.c: Remove and
move code to ...
* src/wait.c: here.
(_gpgme_fd_table_init, fd_table_put): Remove. Do not call them.
(_gpgme_add_io_cb, _gpgme_add_io_cb_user): Change to use the fdtable.
(_gpgme_remove_io_cb, _gpgme_remove_io_cb_user): Ditto.
(_gpgme_wait_global_event_cb): Ditto.
(gpgme_wait_ext, _gpgme_wait_on_condition): Ditto.
* src/wait.h (struct io_cb_tag_s): Add fields 'serial' and 'desc'.
Change 'idx' to 'fd'.
(struct fd_table): Remove.
* src/context.h (struct gpgme_context): Remoce 'fdt'. Rename io_cbs
to user_io_cbs for clarity.
* src/engine-gpgsm.c: Unify trace output.
(start): Pass a description along with the IO handlers.
* src/priv-io.h (struct io_select_fd_s): Rename to io_select_s.
(io_select_t): New.
* src/gpgme.c (_gpgme_cancel_with_err): Replace arg 'ctx' by 'serial'.
(gpgme_cancel): Adjust.
--
This is the second part of a larger refactoring of the wait/event
code. Does currently only work on Unix and with the private wait
functions (i.e. the async operations don't yet work).
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/engine-gpgsm.c')
| -rw-r--r-- | src/engine-gpgsm.c | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c index 9ecdbe47..086ed32d 100644 --- a/src/engine-gpgsm.c +++ b/src/engine-gpgsm.c @@ -910,7 +910,7 @@ status_handler (void *opaque, int fd) /* Try our best to terminate the connection friendly. */ /* assuan_write_line (gpgsm->assuan_ctx, "BYE"); */ TRACE (DEBUG_CTX, "gpgme:status_handler", gpgsm, - "fd 0x%x: error from assuan (%d) getting status line : %s", + "fd=%d: error from assuan (%d) getting status line : %s", fd, err, gpg_strerror (err)); } else if (linelen >= 3 @@ -922,7 +922,7 @@ status_handler (void *opaque, int fd) if (! err) err = gpg_error (GPG_ERR_GENERAL); TRACE (DEBUG_CTX, "gpgme:status_handler", gpgsm, - "fd 0x%x: ERR line - mapped to: %s", + "fd=%d: ERR line - mapped to: %s", fd, err ? gpg_strerror (err) : "ok"); /* Try our best to terminate the connection friendly. */ /* assuan_write_line (gpgsm->assuan_ctx, "BYE"); */ @@ -951,7 +951,7 @@ status_handler (void *opaque, int fd) err = gpgsm->colon.fnc (gpgsm->colon.fnc_value, NULL); } TRACE (DEBUG_CTX, "gpgme:status_handler", gpgsm, - "fd 0x%x: OK line - final status: %s", + "fd=%d: OK line - final status: %s", fd, err ? gpg_strerror (err) : "ok"); _gpgme_io_close (gpgsm->status_cb.fd); return err; @@ -1026,7 +1026,7 @@ status_handler (void *opaque, int fd) } } TRACE (DEBUG_CTX, "gpgme:status_handler", gpgsm, - "fd 0x%x: D line; final status: %s", + "fd=%d: D line; final status: %s", fd, err? gpg_strerror (err):"ok"); } else if (linelen > 2 @@ -1068,7 +1068,7 @@ status_handler (void *opaque, int fd) } TRACE (DEBUG_CTX, "gpgme:status_handler", gpgsm, - "fd 0x%x: D inlinedata; final status: %s", + "fd=%d: D inlinedata; final status: %s", fd, err? gpg_strerror (err):"ok"); } else if (linelen > 2 @@ -1106,7 +1106,7 @@ status_handler (void *opaque, int fd) else fprintf (stderr, "[UNKNOWN STATUS]%s %s", line + 2, rest); TRACE (DEBUG_CTX, "gpgme:status_handler", gpgsm, - "fd 0x%x: S line (%s) - final status: %s", + "fd=%d: S line (%s) - final status: %s", fd, line+2, err? gpg_strerror (err):"ok"); } else if (linelen >= 7 @@ -1131,12 +1131,14 @@ status_handler (void *opaque, int fd) static gpgme_error_t -add_io_cb (engine_gpgsm_t gpgsm, iocb_data_t *iocbd, gpgme_io_cb_t handler) +add_io_cb (engine_gpgsm_t gpgsm, iocb_data_t *iocbd, gpgme_io_cb_t handler, + const char *handler_desc) { gpgme_error_t err; - TRACE_BEG (DEBUG_ENGINE, "engine-gpgsm:add_io_cb", gpgsm, - "fd=%d, dir %d", iocbd->fd, iocbd->dir); + TRACE_BEG (DEBUG_ENGINE, "engine-gpgsm:add_io_cb", NULL, + "fd=%d, dir %d (%s-handler)", + iocbd->fd, iocbd->dir, handler_desc); err = (*gpgsm->io_cbs.add) (gpgsm->io_cbs.add_priv, iocbd->fd, iocbd->dir, handler, iocbd->data, &iocbd->tag); @@ -1205,15 +1207,19 @@ start (engine_gpgsm_t gpgsm, const char *command) return gpg_error (GPG_ERR_GENERAL); } - err = add_io_cb (gpgsm, &gpgsm->status_cb, status_handler); + err = add_io_cb (gpgsm, &gpgsm->status_cb, status_handler, "status"); if (!err && gpgsm->input_cb.fd != -1) - err = add_io_cb (gpgsm, &gpgsm->input_cb, _gpgme_data_outbound_handler); + err = add_io_cb (gpgsm, &gpgsm->input_cb, + _gpgme_data_outbound_handler, "outbound"); if (!err && gpgsm->output_cb.fd != -1) - err = add_io_cb (gpgsm, &gpgsm->output_cb, _gpgme_data_inbound_handler); + err = add_io_cb (gpgsm, &gpgsm->output_cb, + _gpgme_data_inbound_handler, "inbound"); if (!err && gpgsm->message_cb.fd != -1) - err = add_io_cb (gpgsm, &gpgsm->message_cb, _gpgme_data_outbound_handler); + err = add_io_cb (gpgsm, &gpgsm->message_cb, + _gpgme_data_outbound_handler, "outbound"); if (!err && gpgsm->diag_cb.fd != -1) - err = add_io_cb (gpgsm, &gpgsm->diag_cb, _gpgme_data_inbound_handler); + err = add_io_cb (gpgsm, &gpgsm->diag_cb, + _gpgme_data_inbound_handler, "inbound"); if (!err) err = assuan_write_line (gpgsm->assuan_ctx, command); |
