diff options
author | Werner Koch <[email protected]> | 2007-11-27 08:01:19 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2007-11-27 08:01:19 +0000 |
commit | 598a3d0ab4a401f929c03d08cea5c272bf49abda (patch) | |
tree | 3c1e527c7fc15b8da3599d81832e195a0fbde3c2 /agent/call-scd.c | |
parent | Add option --data to GETAUDITLOG command. (diff) | |
download | gnupg-598a3d0ab4a401f929c03d08cea5c272bf49abda.tar.gz gnupg-598a3d0ab4a401f929c03d08cea5c272bf49abda.zip |
[W32] Changed default socket for dirmngr.
[W32] Add some code for event notifications
between scdaemon and gpg-agent.
Diffstat (limited to '')
-rw-r--r-- | agent/call-scd.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/agent/call-scd.c b/agent/call-scd.c index 42f3f8e12..872ba3433 100644 --- a/agent/call-scd.c +++ b/agent/call-scd.c @@ -374,14 +374,17 @@ start_scd (ctrl_t ctrl) } /* Tell the scdaemon we want him to send us an event signal. */ -#ifndef HAVE_W32_SYSTEM { char buf[100]; - sprintf (buf, "OPTION event-signal=%d", SIGUSR2); +#ifdef HAVE_W32_SYSTEM + snprintf (buf, sizeof buf, "OPTION event-signal=%lx", + (unsigned long)get_agent_scd_notify_event ()); +#else + snprintf (buf, sizeof buf, "OPTION event-signal=%d", SIGUSR2); +#endif assuan_transact (ctx, buf, NULL, NULL, NULL, NULL, NULL, NULL); } -#endif primary_scd_ctx = ctx; primary_scd_ctx_reusable = 0; @@ -408,6 +411,9 @@ agent_scd_check_aliveness (void) pth_event_t evt; pid_t pid; int rc; +#ifdef HAVE_W32_SYSTEM + DWORD dummyec; +#endif if (!primary_scd_ctx) return; /* No scdaemon running. */ @@ -435,10 +441,12 @@ agent_scd_check_aliveness (void) { pid = assuan_get_pid (primary_scd_ctx); #ifdef HAVE_W32_SYSTEM -#warning Need to implement an alive test for scdaemon + if (pid != (pid_t)(void*)(-1) && pid + && !GetExitCodeProcess ((HANDLE)pid, &dummyec)) #else if (pid != (pid_t)(-1) && pid && ((rc=waitpid (pid, NULL, WNOHANG))==-1 || (rc == pid)) ) +#endif { /* Okay, scdaemon died. Disconnect the primary connection now but take care that it won't do another wait. Also @@ -467,7 +475,6 @@ agent_scd_check_aliveness (void) xfree (socket_name); socket_name = NULL; } -#endif } if (!pth_mutex_release (&start_scd_lock)) |