diff --git a/common/asshelp.c b/common/asshelp.c index 76f812d8c..d87017eba 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -326,7 +326,10 @@ wait_for_sock (int secs, const char *name, const char *sockname, int verbose, as { if (verbose) { - secsleft = (target_us - elapsed_us)/1000000; + secsleft = (target_us - elapsed_us + 999999)/1000000; + /* log_clock ("left=%d last=%d targ=%d elap=%d next=%d\n", */ + /* secsleft, lastalert, target_us, elapsed_us, */ + /* next_sleep_us); */ if (secsleft < lastalert) { log_info (_("waiting for the %s to come up ... (%ds)\n"), diff --git a/common/sysutils.c b/common/sysutils.c index e90010c44..55a7ee9ec 100644 --- a/common/sysutils.c +++ b/common/sysutils.c @@ -340,11 +340,10 @@ gnupg_usleep (unsigned int usecs) struct timespec req; struct timespec rem; - req.tv_sec = 0; - req.tv_nsec = usecs * 1000; - + req.tv_sec = usecs / 1000000; + req.tv_nsec = (usecs % 1000000) * 1000; while (nanosleep (&req, &rem) < 0 && errno == EINTR) - req = rem; + req = rem; } #else /*Standard Unix*/ diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 31f8e0f46..5965f84ef 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -1203,6 +1203,14 @@ main (int argc, char **argv) current_logfile = xstrdup (logfile); } + if (debug_wait) + { + log_debug ("waiting for debugger - my pid is %u .....\n", + (unsigned int)getpid()); + gnupg_sleep (debug_wait); + log_debug ("... okay\n"); + } + #ifndef HAVE_W32_SYSTEM if (strchr (socket_name, ':')) {