1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

common: Add an assuan logging monitor.

* common/asshelp.c (my_log_monitor): New var.
(my_libassuan_log_handler): Run that monitor.
(setup_libassuan_logging): Add arg to set a log monitor and change all
callers.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2016-09-05 10:55:10 +02:00
parent 0a4a03e531
commit 0ac671f8a2
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
10 changed files with 27 additions and 12 deletions

View File

@ -771,7 +771,7 @@ main (int argc, char **argv )
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH); assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH);
assuan_sock_init (); assuan_sock_init ();
setup_libassuan_logging (&opt.debug); setup_libassuan_logging (&opt.debug, NULL);
setup_libgcrypt_logging (); setup_libgcrypt_logging ();
gcry_control (GCRYCTL_USE_SECURE_RNDPOOL); gcry_control (GCRYCTL_USE_SECURE_RNDPOOL);

View File

@ -69,6 +69,12 @@
static int log_cats; static int log_cats;
#define TEST_LOG_CAT(x) (!! (log_cats & (1 << (x - 1)))) #define TEST_LOG_CAT(x) (!! (log_cats & (1 << (x - 1))))
/* The assuan log monitor used to temporary inhibit log messages from
* assuan. */
static int (*my_log_monitor) (assuan_context_t ctx,
unsigned int cat,
const char *msg);
static int static int
my_libassuan_log_handler (assuan_context_t ctx, void *hook, my_libassuan_log_handler (assuan_context_t ctx, void *hook,
@ -76,8 +82,6 @@ my_libassuan_log_handler (assuan_context_t ctx, void *hook,
{ {
unsigned int dbgval; unsigned int dbgval;
(void)ctx;
if (! TEST_LOG_CAT (cat)) if (! TEST_LOG_CAT (cat))
return 0; return 0;
@ -85,6 +89,9 @@ my_libassuan_log_handler (assuan_context_t ctx, void *hook,
if (!(dbgval & 1024)) if (!(dbgval & 1024))
return 0; /* Assuan debugging is not enabled. */ return 0; /* Assuan debugging is not enabled. */
if (ctx && my_log_monitor && !my_log_monitor (ctx, cat, msg))
return 0; /* Temporary disabled. */
if (msg) if (msg)
log_string (GPGRT_LOG_DEBUG, msg); log_string (GPGRT_LOG_DEBUG, msg);
@ -95,7 +102,10 @@ my_libassuan_log_handler (assuan_context_t ctx, void *hook,
/* Setup libassuan to use our own logging functions. Should be used /* Setup libassuan to use our own logging functions. Should be used
early at startup. */ early at startup. */
void void
setup_libassuan_logging (unsigned int *debug_var_address) setup_libassuan_logging (unsigned int *debug_var_address,
int (*log_monitor)(assuan_context_t ctx,
unsigned int cat,
const char *msg))
{ {
char *flagstr; char *flagstr;
@ -104,9 +114,11 @@ setup_libassuan_logging (unsigned int *debug_var_address)
log_cats = atoi (flagstr); log_cats = atoi (flagstr);
else /* Default to log the control channel. */ else /* Default to log the control channel. */
log_cats = (1 << (ASSUAN_LOG_CONTROL - 1)); log_cats = (1 << (ASSUAN_LOG_CONTROL - 1));
my_log_monitor = log_monitor;
assuan_set_log_cb (my_libassuan_log_handler, debug_var_address); assuan_set_log_cb (my_libassuan_log_handler, debug_var_address);
} }
/* Change the Libassuan log categories to those given by NEWCATS. /* Change the Libassuan log categories to those given by NEWCATS.
NEWCATS is 0 the default category of ASSUAN_LOG_CONTROL is NEWCATS is 0 the default category of ASSUAN_LOG_CONTROL is
selected. Note, that setup_libassuan_logging overrides the values selected. Note, that setup_libassuan_logging overrides the values

View File

@ -38,7 +38,10 @@
/*-- asshelp.c --*/ /*-- asshelp.c --*/
void setup_libassuan_logging (unsigned int *debug_var_address); void setup_libassuan_logging (unsigned int *debug_var_address,
int (*log_monitor)(assuan_context_t ctx,
unsigned int cat,
const char *msg));
void set_libassuan_log_cats (unsigned int newcats); void set_libassuan_log_cats (unsigned int newcats);

View File

@ -702,7 +702,7 @@ main (int argc, char **argv)
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH); assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH);
assuan_sock_init (); assuan_sock_init ();
setup_libassuan_logging (&opt.debug); setup_libassuan_logging (&opt.debug, NULL);
setup_libgcrypt_logging (); setup_libgcrypt_logging ();

View File

@ -2317,7 +2317,7 @@ main (int argc, char **argv)
malloc_hooks.free = gcry_free; malloc_hooks.free = gcry_free;
assuan_set_malloc_hooks (&malloc_hooks); assuan_set_malloc_hooks (&malloc_hooks);
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
setup_libassuan_logging (&opt.debug); setup_libassuan_logging (&opt.debug, NULL);
/* Try for a version specific config file first */ /* Try for a version specific config file first */
default_configname = get_default_configname (); default_configname = get_default_configname ();

View File

@ -302,7 +302,7 @@ main ( int argc, char **argv)
/* Prepare libassuan. */ /* Prepare libassuan. */
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
/*assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH);*/ /*assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH);*/
setup_libassuan_logging (&opt.debug); setup_libassuan_logging (&opt.debug, NULL);
/* Setup a default control structure for command line mode. */ /* Setup a default control structure for command line mode. */
memset (&ctrl, 0, sizeof ctrl); memset (&ctrl, 0, sizeof ctrl);

View File

@ -431,7 +431,7 @@ main ( int argc, char **argv)
/* Prepare libassuan. */ /* Prepare libassuan. */
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH); assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH);
setup_libassuan_logging (&opt.debug); setup_libassuan_logging (&opt.debug, NULL);
/* Setup a default control structure for command line mode. */ /* Setup a default control structure for command line mode. */
memset (&ctrl, 0, sizeof ctrl); memset (&ctrl, 0, sizeof ctrl);

View File

@ -433,7 +433,7 @@ main (int argc, char **argv )
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH); assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH);
assuan_sock_init (); assuan_sock_init ();
setup_libassuan_logging (&opt.debug); setup_libassuan_logging (&opt.debug, NULL);
setup_libgcrypt_logging (); setup_libgcrypt_logging ();
gcry_control (GCRYCTL_USE_SECURE_RNDPOOL); gcry_control (GCRYCTL_USE_SECURE_RNDPOOL);

View File

@ -1006,7 +1006,7 @@ main ( int argc, char **argv)
malloc_hooks.free = gcry_free; malloc_hooks.free = gcry_free;
assuan_set_malloc_hooks (&malloc_hooks); assuan_set_malloc_hooks (&malloc_hooks);
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
setup_libassuan_logging (&opt.debug); setup_libassuan_logging (&opt.debug, NULL);
keybox_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free); keybox_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free);

View File

@ -211,7 +211,7 @@ main (int argc, char **argv)
init_common_subsystems (&argc, &argv); init_common_subsystems (&argc, &argv);
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
setup_libassuan_logging (&opt.debug); setup_libassuan_logging (&opt.debug, NULL);
/* Parse the command line. */ /* Parse the command line. */
pargs.argc = &argc; pargs.argc = &argc;