2007-09-14 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Fri, 14 Sep 2007 14:25:02 +0000 (14:25 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Fri, 14 Sep 2007 14:25:02 +0000 (14:25 +0000)
* call-pinentry.c (agent_popup_message_stop): Implement kill for
Windows.

agent/ChangeLog
agent/call-pinentry.c

index 46f1a25..a10d298 100644 (file)
@@ -1,3 +1,8 @@
+2007-09-14  Marcus Brinkmann  <marcus@g10code.de>
+
+       * call-pinentry.c (agent_popup_message_stop): Implement kill for
+       Windows.
+
 2007-08-28  Werner Koch  <wk@g10code.com>
 
        * gpg-agent.c (main): Add option --faked-system-time.
index f29d3c4..14cc422 100644 (file)
@@ -812,7 +812,16 @@ agent_popup_message_stop (ctrl_t ctrl)
   else if (popup_finished)
     ; /* Already finished and ready for joining. */
 #ifdef HAVE_W32_SYSTEM
-#  warning need to implement a kill mechanism for pinentry  
+  /* Older versions of assuan set PID to 0 on Windows to indicate an
+     invalid value.  */
+  else if (pid != (pid_t) INVALID_HANDLE_VALUE
+          && pid != 0)
+    {
+      HANDLE process = (HANDLE) pid;
+      
+      /* Arbitrary error code.  */
+      TerminateProcess (process, 1);
+    }
 #else
   else if (pid && ((rc=waitpid (pid, NULL, WNOHANG))==-1 || (rc == pid)) )
     { /* The daemon already died.  No need to send a kill.  However