Merging bug-fixes from CVS HEAD.
This commit is contained in:
parent
afc34f239c
commit
3b346c52aa
19
NEWS
19
NEWS
@ -1,6 +1,23 @@
|
|||||||
Noteworthy changes in version 1.0.3
|
Noteworthy changes in version 1.0.3 (unreleased)
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
|
* Previousy, GPGME would use a default "include certs" of 1. This
|
||||||
|
has been changed. Now GPGME will use the crypto backend engines
|
||||||
|
default unless you set the value with gpgme_set_include_certs()
|
||||||
|
explicitely. A new macro GPGME_INCLUDE_CERTS_DEFAULT can be used
|
||||||
|
as a value to explicitely request the new default behaviour.
|
||||||
|
|
||||||
|
Because the default changes, this is a slight change of the API
|
||||||
|
semantics. We consider it to be a bug fix.
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
gpgme_set_engine_info NEW
|
||||||
|
gpgme_ctx_get_engine_info NEW
|
||||||
|
gpgme_ctx_set_engine_info NEW
|
||||||
|
gpgme_set_include_certs CHANGED DEFAULT
|
||||||
|
GPGME_INCLUDE_CERTS_DEFAULT NEW
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
Noteworthy changes in version 1.0.2 (2004-12-28)
|
Noteworthy changes in version 1.0.2 (2004-12-28)
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
1
THANKS
1
THANKS
@ -9,6 +9,7 @@ Albrecht Dre
|
|||||||
Alfons Hoogervorst alfons@proteus.demon.nl
|
Alfons Hoogervorst alfons@proteus.demon.nl
|
||||||
Enno Cramer uebergeek@web.de
|
Enno Cramer uebergeek@web.de
|
||||||
Frank Heckenbach frank@g-n-u.de
|
Frank Heckenbach frank@g-n-u.de
|
||||||
|
Igor Belyi gpgme@katehok.ac93.org
|
||||||
Jan-Oliver Wagner jan@intevation.de
|
Jan-Oliver Wagner jan@intevation.de
|
||||||
Johannes Poehlmann jhp@caldera.de
|
Johannes Poehlmann jhp@caldera.de
|
||||||
Jose C. García Sogo jose@jaimedelamo.eu.org
|
Jose C. García Sogo jose@jaimedelamo.eu.org
|
||||||
|
11
TODO
11
TODO
@ -1,7 +1,6 @@
|
|||||||
Hey Emacs, this is -*- outline -*- mode!
|
Hey Emacs, this is -*- outline -*- mode!
|
||||||
|
|
||||||
* Before release:
|
* Before release:
|
||||||
** Switch to LGPL?
|
|
||||||
** Some gpg tests fail with gpg 1.3.4-cvs (gpg/t-keylist-sig)
|
** Some gpg tests fail with gpg 1.3.4-cvs (gpg/t-keylist-sig)
|
||||||
The test is currently disabled there and in gpg/t-import.
|
The test is currently disabled there and in gpg/t-import.
|
||||||
** Add notation data to key signatures.
|
** Add notation data to key signatures.
|
||||||
@ -9,7 +8,8 @@ Hey Emacs, this is -*- outline -*- mode!
|
|||||||
* ABI's to break:
|
* ABI's to break:
|
||||||
** I/O and User Data could be made extensible. But this can be done
|
** I/O and User Data could be made extensible. But this can be done
|
||||||
without breaking the ABI hopefully.
|
without breaking the ABI hopefully.
|
||||||
* All enums that should be enums need to have a maximum value to ensure a certain minimum width for extensibility.
|
* All enums that should be enums need to have a maximum value to ensure
|
||||||
|
a certain minimum width for extensibility.
|
||||||
** Compatibility interfaces that can be removed in future versions:
|
** Compatibility interfaces that can be removed in future versions:
|
||||||
*** ath compatibility modules.
|
*** ath compatibility modules.
|
||||||
*** gpgme_data_new_from_filepart
|
*** gpgme_data_new_from_filepart
|
||||||
@ -28,6 +28,7 @@ Hey Emacs, this is -*- outline -*- mode!
|
|||||||
*** gpgme_attr_t
|
*** gpgme_attr_t
|
||||||
*** All Gpgme* typedefs.
|
*** All Gpgme* typedefs.
|
||||||
|
|
||||||
|
|
||||||
* Thread support:
|
* Thread support:
|
||||||
** When GNU Pth supports sendmsg/recvmsg, wrap them properly.
|
** When GNU Pth supports sendmsg/recvmsg, wrap them properly.
|
||||||
** Without timegm (3) support our ISO time parser is not thread safe.
|
** Without timegm (3) support our ISO time parser is not thread safe.
|
||||||
@ -60,9 +61,6 @@ Hey Emacs, this is -*- outline -*- mode!
|
|||||||
This allows us to handle years later than 2037 properly. With the
|
This allows us to handle years later than 2037 properly. With the
|
||||||
time_t interface they are all mapped to 2037-12-31
|
time_t interface they are all mapped to 2037-12-31
|
||||||
|
|
||||||
* Support
|
|
||||||
** gpgme.m4 should check --api-version of gpgme-config.
|
|
||||||
|
|
||||||
* Documentation
|
* Documentation
|
||||||
** Document validity and trust issues.
|
** Document validity and trust issues.
|
||||||
|
|
||||||
@ -143,10 +141,9 @@ Hey Emacs, this is -*- outline -*- mode!
|
|||||||
|
|
||||||
* Build suite
|
* Build suite
|
||||||
** Make sure everything is cleaned correctly (esp. test area).
|
** Make sure everything is cleaned correctly (esp. test area).
|
||||||
** Configure test for gpg and gpgsm version (as a warning).
|
|
||||||
** Enable AC_CONFIG_MACRO_DIR and bump up autoconf version requirement.
|
** Enable AC_CONFIG_MACRO_DIR and bump up autoconf version requirement.
|
||||||
(To fix "./autogen.sh; ./configure --enable-maintainer-mode; touch
|
(To fix "./autogen.sh; ./configure --enable-maintainer-mode; touch
|
||||||
configure.ac; make").
|
configure.ac; make"). Currently worked around with ACLOCAL_AMFLAGS???
|
||||||
|
|
||||||
* Error checking
|
* Error checking
|
||||||
** engine-gpgsm, with-validation
|
** engine-gpgsm, with-validation
|
||||||
|
@ -1,3 +1,14 @@
|
|||||||
|
2005-05-28 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* gpgme.texi (Key Listing Mode): Fix return type of
|
||||||
|
gpgme_set_keylist_mode.
|
||||||
|
Reported by "Sergio" <ml_sergico@virgilio.it>.
|
||||||
|
|
||||||
|
2005-04-28 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* gpgme.texi (Included Certificates): Document
|
||||||
|
GPGME_INCLUDE_CERTS_DEFAULT.
|
||||||
|
|
||||||
2004-12-07 Marcus Brinkmann <marcus@g10code.de>
|
2004-12-07 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
* lesser.texi (Library Copying): Change from @appendixsec to
|
* lesser.texi (Library Copying): Change from @appendixsec to
|
||||||
|
@ -1944,6 +1944,9 @@ default, only the sender's certificate is included. The possible
|
|||||||
values of @var{nr_of_certs} are:
|
values of @var{nr_of_certs} are:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
|
@item GPGME_INCLUDE_CERTS_DEFAULT
|
||||||
|
Fall back to the default of the crypto backend. This is the default
|
||||||
|
for GPGME.
|
||||||
@item -2
|
@item -2
|
||||||
Include all certificates except the root certificate.
|
Include all certificates except the root certificate.
|
||||||
@item -1
|
@item -1
|
||||||
@ -1974,7 +1977,7 @@ certificates to include into an S/MIME signed message.
|
|||||||
@cindex key listing mode
|
@cindex key listing mode
|
||||||
@cindex key listing, mode of
|
@cindex key listing, mode of
|
||||||
|
|
||||||
@deftypefun void gpgme_set_keylist_mode (@w{gpgme_ctx_t @var{ctx}}, @w{gpgme_keylist_mode_t @var{mode}})
|
@deftypefun gpgme_error_t gpgme_set_keylist_mode (@w{gpgme_ctx_t @var{ctx}}, @w{gpgme_keylist_mode_t @var{mode}})
|
||||||
The function @code{gpgme_set_keylist_mode} changes the default
|
The function @code{gpgme_set_keylist_mode} changes the default
|
||||||
behaviour of the key listing functions. The value in @var{mode} is a
|
behaviour of the key listing functions. The value in @var{mode} is a
|
||||||
bitwise-or combination of one or multiple of the following bit values:
|
bitwise-or combination of one or multiple of the following bit values:
|
||||||
|
@ -1,7 +1,46 @@
|
|||||||
|
2005-05-28 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* data-user.c: Include <errno.h>.
|
||||||
|
|
||||||
|
2005-05-17 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* gpgme.c (gpgme_new): Set the CTX->include_certs default to the
|
||||||
|
default.
|
||||||
|
|
||||||
|
2005-05-11 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* w32-io.c (_gpgme_io_select): Fix loop increment.
|
||||||
|
|
||||||
|
2005-05-05 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* data-user.c (user_release): Only call user hook if provided.
|
||||||
|
(user_seek): Return EBADF if no user hook is provided.
|
||||||
|
(user_read): Likewise.
|
||||||
|
(user_write): Likewise.
|
||||||
|
|
||||||
|
2005-04-28 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* gpgme.h (GPGME_INCLUDE_CERTS_DEFAULT): New macro.
|
||||||
|
* engine-gpgsm.c (gpgsm_sign): Send the include-certs option after
|
||||||
|
the reset, just for cleanliness, and do not sent it at all if the
|
||||||
|
default is requested.
|
||||||
|
* gpgme.c (gpgme_set_include_certs): Allow to use
|
||||||
|
GPGME_INCLUDE_CERTS_DEFAULT.
|
||||||
|
|
||||||
2005-04-21 Werner Koch <wk@g10code.com>
|
2005-04-21 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* verify.c (calc_sig_summary): Set the key revoked bit.
|
* verify.c (calc_sig_summary): Set the key revoked bit.
|
||||||
|
|
||||||
|
2005-04-14 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* wait-global.c (gpgme_wait): Use LI->ctx when checking a context
|
||||||
|
in the list, not the user-provided CTX.
|
||||||
|
Reported by Igor Belyi <gpgme@katehok.ac93.org>.
|
||||||
|
|
||||||
|
* wait-global.c (gpgme_wait): If no context is found, and we
|
||||||
|
should not hang, set *status to 0 and return NULL.
|
||||||
|
Reported by Igor Belyi <gpgme@katehok.ac93.org>.
|
||||||
|
|
||||||
2004-12-11 Marcus Brinkmann <marcus@g10code.de>
|
2004-12-11 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
* util.h [HAVE_CONFIG_H && HAVE_TTYNAME_R] (ttyname_r): Define
|
* util.h [HAVE_CONFIG_H && HAVE_TTYNAME_R] (ttyname_r): Define
|
||||||
@ -4570,7 +4609,7 @@
|
|||||||
* data.c (gpgme_data_rewind): Allow to rewind data_type_none.
|
* data.c (gpgme_data_rewind): Allow to rewind data_type_none.
|
||||||
|
|
||||||
|
|
||||||
Copyright 2001, 2002, 2003, 2004 g10 Code GmbH
|
Copyright 2001, 2002, 2003, 2004, 2005 g10 Code GmbH
|
||||||
|
|
||||||
This file is free software; as a special exception the author gives
|
This file is free software; as a special exception the author gives
|
||||||
unlimited permission to copy and/or distribute it, with or without
|
unlimited permission to copy and/or distribute it, with or without
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
|
|
||||||
@ -30,6 +31,9 @@
|
|||||||
static ssize_t
|
static ssize_t
|
||||||
user_read (gpgme_data_t dh, void *buffer, size_t size)
|
user_read (gpgme_data_t dh, void *buffer, size_t size)
|
||||||
{
|
{
|
||||||
|
if (!dh->data.user.cbs->read)
|
||||||
|
return EBADF;
|
||||||
|
|
||||||
return (*dh->data.user.cbs->read) (dh->data.user.handle, buffer, size);
|
return (*dh->data.user.cbs->read) (dh->data.user.handle, buffer, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,6 +41,9 @@ user_read (gpgme_data_t dh, void *buffer, size_t size)
|
|||||||
static ssize_t
|
static ssize_t
|
||||||
user_write (gpgme_data_t dh, const void *buffer, size_t size)
|
user_write (gpgme_data_t dh, const void *buffer, size_t size)
|
||||||
{
|
{
|
||||||
|
if (!dh->data.user.cbs->write)
|
||||||
|
return EBADF;
|
||||||
|
|
||||||
return (*dh->data.user.cbs->write) (dh->data.user.handle, buffer, size);
|
return (*dh->data.user.cbs->write) (dh->data.user.handle, buffer, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,6 +51,9 @@ user_write (gpgme_data_t dh, const void *buffer, size_t size)
|
|||||||
static off_t
|
static off_t
|
||||||
user_seek (gpgme_data_t dh, off_t offset, int whence)
|
user_seek (gpgme_data_t dh, off_t offset, int whence)
|
||||||
{
|
{
|
||||||
|
if (!dh->data.user.cbs->seek)
|
||||||
|
return EBADF;
|
||||||
|
|
||||||
return (*dh->data.user.cbs->seek) (dh->data.user.handle, offset, whence);
|
return (*dh->data.user.cbs->seek) (dh->data.user.handle, offset, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,6 +61,7 @@ user_seek (gpgme_data_t dh, off_t offset, int whence)
|
|||||||
static void
|
static void
|
||||||
user_release (gpgme_data_t dh)
|
user_release (gpgme_data_t dh)
|
||||||
{
|
{
|
||||||
|
if (dh->data.user.cbs->release)
|
||||||
(*dh->data.user.cbs->release) (dh->data.user.handle);
|
(*dh->data.user.cbs->release) (dh->data.user.handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* engine-gpgsm.c - GpgSM engine.
|
/* engine-gpgsm.c - GpgSM engine.
|
||||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||||
Copyright (C) 2001, 2002, 2003, 2004 g10 Code GmbH
|
Copyright (C) 2001, 2002, 2003, 2004, 2005 g10 Code GmbH
|
||||||
|
|
||||||
This file is part of GPGME.
|
This file is part of GPGME.
|
||||||
|
|
||||||
@ -1433,19 +1433,27 @@ gpgsm_sign (void *engine, gpgme_data_t in, gpgme_data_t out,
|
|||||||
if (!gpgsm)
|
if (!gpgsm)
|
||||||
return gpg_error (GPG_ERR_INV_VALUE);
|
return gpg_error (GPG_ERR_INV_VALUE);
|
||||||
|
|
||||||
if (asprintf (&assuan_cmd, "OPTION include-certs %i", include_certs) < 0)
|
|
||||||
return gpg_error_from_errno (errno);
|
|
||||||
err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, assuan_cmd, NULL,NULL);
|
|
||||||
free (assuan_cmd);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
/* We must send a reset because we need to reset the list of
|
/* We must send a reset because we need to reset the list of
|
||||||
signers. Note that RESET does not reset OPTION commands. */
|
signers. Note that RESET does not reset OPTION commands. */
|
||||||
err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, "RESET", NULL, NULL);
|
err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, "RESET", NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
if (include_certs != GPGME_INCLUDE_CERTS_DEFAULT)
|
||||||
|
{
|
||||||
|
/* FIXME: Make sure that if we run multiple operations, that we
|
||||||
|
can reset any previously set value in case the default is
|
||||||
|
requested. */
|
||||||
|
|
||||||
|
if (asprintf (&assuan_cmd, "OPTION include-certs %i", include_certs) < 0)
|
||||||
|
return gpg_error_from_errno (errno);
|
||||||
|
err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, assuan_cmd,
|
||||||
|
NULL, NULL);
|
||||||
|
free (assuan_cmd);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; (key = gpgme_signers_enum (ctx, i)); i++)
|
for (i = 0; (key = gpgme_signers_enum (ctx, i)); i++)
|
||||||
{
|
{
|
||||||
const char *s = key->subkeys ? key->subkeys->fpr : NULL;
|
const char *s = key->subkeys ? key->subkeys->fpr : NULL;
|
||||||
|
@ -52,7 +52,7 @@ gpgme_new (gpgme_ctx_t *r_ctx)
|
|||||||
if (!ctx)
|
if (!ctx)
|
||||||
return gpg_error_from_errno (errno);
|
return gpg_error_from_errno (errno);
|
||||||
ctx->keylist_mode = GPGME_KEYLIST_MODE_LOCAL;
|
ctx->keylist_mode = GPGME_KEYLIST_MODE_LOCAL;
|
||||||
ctx->include_certs = 1;
|
ctx->include_certs = GPGME_INCLUDE_CERTS_DEFAULT;
|
||||||
ctx->protocol = GPGME_PROTOCOL_OpenPGP;
|
ctx->protocol = GPGME_PROTOCOL_OpenPGP;
|
||||||
_gpgme_fd_table_init (&ctx->fdt);
|
_gpgme_fd_table_init (&ctx->fdt);
|
||||||
|
|
||||||
@ -211,12 +211,14 @@ gpgme_get_textmode (gpgme_ctx_t ctx)
|
|||||||
|
|
||||||
|
|
||||||
/* Set the number of certifications to include in an S/MIME message.
|
/* Set the number of certifications to include in an S/MIME message.
|
||||||
The default is 1 (only the cert of the sender). -1 means all
|
The default is GPGME_INCLUDE_CERTS_DEFAULT. -1 means all certs,
|
||||||
certs, and -2 means all certs except the root cert. */
|
and -2 means all certs except the root cert. */
|
||||||
void
|
void
|
||||||
gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs)
|
gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs)
|
||||||
{
|
{
|
||||||
if (nr_of_certs < -2)
|
if (nr_of_certs == GPGME_INCLUDE_CERTS_DEFAULT)
|
||||||
|
ctx->include_certs = GPGME_INCLUDE_CERTS_DEFAULT;
|
||||||
|
else if (nr_of_certs < -2)
|
||||||
ctx->include_certs = -2;
|
ctx->include_certs = -2;
|
||||||
else
|
else
|
||||||
ctx->include_certs = nr_of_certs;
|
ctx->include_certs = nr_of_certs;
|
||||||
|
@ -705,6 +705,9 @@ void gpgme_set_textmode (gpgme_ctx_t ctx, int yes);
|
|||||||
/* Return non-zero if text mode is set in CTX. */
|
/* Return non-zero if text mode is set in CTX. */
|
||||||
int gpgme_get_textmode (gpgme_ctx_t ctx);
|
int gpgme_get_textmode (gpgme_ctx_t ctx);
|
||||||
|
|
||||||
|
/* Use whatever the default of the backend crypto engine is. */
|
||||||
|
#define GPGME_INCLUDE_CERTS_DEFAULT -256
|
||||||
|
|
||||||
/* Include up to NR_OF_CERTS certificates in an S/MIME message. */
|
/* Include up to NR_OF_CERTS certificates in an S/MIME message. */
|
||||||
void gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs);
|
void gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs);
|
||||||
|
|
||||||
|
@ -1085,7 +1085,7 @@ _gpgme_io_select ( struct io_select_fd_s *fds, size_t nfds, int nonblock )
|
|||||||
int k, j = handle_to_fd (waitbuf[i]);
|
int k, j = handle_to_fd (waitbuf[i]);
|
||||||
|
|
||||||
DEBUG1 ("WFMO invalid handle %d removed\n", j);
|
DEBUG1 ("WFMO invalid handle %d removed\n", j);
|
||||||
for (k=0 ; k < nfds; i++ ) {
|
for (k=0 ; k < nfds; k++ ) {
|
||||||
if ( fds[k].fd == j ) {
|
if ( fds[k].fd == j ) {
|
||||||
fds[k].for_read = fds[k].for_write = 0;
|
fds[k].for_read = fds[k].for_write = 0;
|
||||||
goto restart;
|
goto restart;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* wait-global.c
|
/* wait-global.c
|
||||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||||
Copyright (C) 2001, 2002, 2003, 2004 g10 Code GmbH
|
Copyright (C) 2001, 2002, 2003, 2004, 2005 g10 Code GmbH
|
||||||
|
|
||||||
This file is part of GPGME.
|
This file is part of GPGME.
|
||||||
|
|
||||||
@ -331,13 +331,15 @@ gpgme_wait (gpgme_ctx_t ctx, gpgme_error_t *status, int hang)
|
|||||||
LOCK (ctx_list_lock);
|
LOCK (ctx_list_lock);
|
||||||
for (li = ctx_active_list; li; li = li->next)
|
for (li = ctx_active_list; li; li = li->next)
|
||||||
{
|
{
|
||||||
for (i = 0; i < ctx->fdt.size; i++)
|
gpgme_ctx_t actx = li->ctx;
|
||||||
if (ctx->fdt.fds[i].fd != -1)
|
|
||||||
|
for (i = 0; i < actx->fdt.size; i++)
|
||||||
|
if (actx->fdt.fds[i].fd != -1)
|
||||||
break;
|
break;
|
||||||
if (i == ctx->fdt.size)
|
if (i == actx->fdt.size)
|
||||||
{
|
{
|
||||||
gpgme_error_t err = 0;
|
gpgme_error_t err = 0;
|
||||||
_gpgme_engine_io_event (ctx->engine, GPGME_EVENT_DONE, &err);
|
_gpgme_engine_io_event (actx->engine, GPGME_EVENT_DONE, &err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNLOCK (ctx_list_lock);
|
UNLOCK (ctx_list_lock);
|
||||||
@ -350,6 +352,12 @@ gpgme_wait (gpgme_ctx_t ctx, gpgme_error_t *status, int hang)
|
|||||||
ctx = dctx;
|
ctx = dctx;
|
||||||
hang = 0;
|
hang = 0;
|
||||||
}
|
}
|
||||||
|
else if (!hang)
|
||||||
|
{
|
||||||
|
ctx = NULL;
|
||||||
|
if (status)
|
||||||
|
*status = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (hang);
|
while (hang);
|
||||||
|
Loading…
Reference in New Issue
Block a user