From d22506a343cec61b7d1a48c970b63a8458b267ab Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 27 Apr 2018 11:57:08 +0200 Subject: dirmngr: Silence log output from dirmngr_ldap. * dirmngr/dirmngr_ldap.c: Remove assert.h. (main): Replace assert by log_assert. * dirmngr/ldap.c (run_ldap_wrapper): Use debug options to pass verbose options to dirmngr_ldap. (start_cert_fetch_ldap): Ditto. -- verbose is a pretty common option in dirmngr.conf and it would clutter the logs with output from dirmngr_ldap. Now we require DBG_EXTPROG or DBG_LOOKUP to make dirmngr_ldap more verbose. Signed-off-by: Werner Koch --- dirmngr/dirmngr_ldap.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'dirmngr/dirmngr_ldap.c') diff --git a/dirmngr/dirmngr_ldap.c b/dirmngr/dirmngr_ldap.c index 5be4e5814..e05c77925 100644 --- a/dirmngr/dirmngr_ldap.c +++ b/dirmngr/dirmngr_ldap.c @@ -29,7 +29,6 @@ # include #endif #include -#include #include #include #ifndef USE_LDAPWRAPPER @@ -343,7 +342,7 @@ ldap_wrapper_main (char **argv, estream_t outstream) usage (1); #else /* All passed arguments should be fine in this case. */ - assert (argc); + log_assert (argc); #endif #ifdef USE_LDAPWRAPPER -- cgit From 007dde93cc3971cb51d08e8c082e172506ae7f80 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 2 May 2018 18:40:01 +0200 Subject: dirmngr: Implement timeout for dirmngr_ldap under Windows. * dirmngr/dirmngr_ldap.c (alarm_thread) [W32]: New. (set_timeout): Implement for W32. -- GnuPG-bug-id: 3937 Signed-off-by: Werner Koch --- dirmngr/dirmngr_ldap.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) (limited to 'dirmngr/dirmngr_ldap.c') diff --git a/dirmngr/dirmngr_ldap.c b/dirmngr/dirmngr_ldap.c index e05c77925..8452c3ba0 100644 --- a/dirmngr/dirmngr_ldap.c +++ b/dirmngr/dirmngr_ldap.c @@ -381,16 +381,56 @@ catch_alarm (int dummy) } #endif + +#ifdef HAVE_W32_SYSTEM +static DWORD CALLBACK +alarm_thread (void *arg) +{ + HANDLE timer = arg; + + WaitForSingleObject (timer, INFINITE); + _exit (10); + + return 0; +} +#endif + + static void set_timeout (my_opt_t myopt) { + if (myopt->alarm_timeout) + { #ifdef HAVE_W32_SYSTEM - /* FIXME for W32. */ - (void)myopt; + static HANDLE timer; + LARGE_INTEGER due_time; + + /* A negative value is a relative time. */ + due_time.QuadPart = (unsigned long long)-10000000 * myopt->alarm_timeout; + + if (!timer) + { + SECURITY_ATTRIBUTES sec_attr; + DWORD tid; + + memset (&sec_attr, 0, sizeof sec_attr); + sec_attr.nLength = sizeof sec_attr; + sec_attr.bInheritHandle = FALSE; + + /* Create a manual resetable timer. */ + timer = CreateWaitableTimer (NULL, TRUE, NULL); + /* Intially set the timer. */ + SetWaitableTimer (timer, &due_time, 0, NULL, NULL, 0); + + if (CreateThread (&sec_attr, 0, alarm_thread, timer, 0, &tid)) + log_error ("failed to create alarm thread\n"); + } + else /* Retrigger the timer. */ + SetWaitableTimer (timer, &due_time, 0, NULL, NULL, 0); #else - if (myopt->alarm_timeout) - alarm (myopt->alarm_timeout); + alarm (myopt->alarm_timeout); #endif + } } -- cgit