From 200f94a42cd862321db5832744f237c250fbce38 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=A0=D1=83=D1=81=D0=BB=D0=B0=D0=BD=20=D0=98=D0=B6=D0=B1=D1?=
 =?UTF-8?q?=83=D0=BB=D0=B0=D1=82=D0=BE=D0=B2?= <lrn1986@gmail.com>
Date: Tue, 28 Dec 2010 02:00:59 +0300
Subject: [PATCH] Temporary fix for process_kill()

---
 src/util/os_priority.c |   52 ++++++++++++++---------------------------------
 1 files changed, 16 insertions(+), 36 deletions(-)

diff --git a/src/util/os_priority.c b/src/util/os_priority.c
index 4d2f98b..acb1219 100644
--- a/src/util/os_priority.c
+++ b/src/util/os_priority.c
@@ -146,46 +146,26 @@ GNUNET_OS_process_kill (struct GNUNET_OS_Process *proc, int sig)
     else
       GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
           "Failed to write into control pipe , errno is %d\n", errno);
+#if WINDOWS
+    res = 0;
+    TerminateProcess (proc->handle, 0);
+#else
     res = PLIBC_KILL (proc->pid, sig);
+#endif
   }
   else
   {
-  	struct GNUNET_NETWORK_FDSet *rfds;
-    struct GNUNET_NETWORK_FDSet *efds;
-
-    rfds = GNUNET_NETWORK_fdset_create ();
-    efds = GNUNET_NETWORK_fdset_create ();
-
-    GNUNET_NETWORK_fdset_handle_set (rfds, proc->control_pipe);
-    GNUNET_NETWORK_fdset_handle_set (efds, proc->control_pipe);
-
- read_next:
-        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-            "Wrote control code into control pipe, now waiting\n");
-
-        ret = GNUNET_NETWORK_socket_select (rfds, NULL, efds,
-            GNUNET_TIME_relative_multiply (GNUNET_TIME_relative_get_unit (),
-                5000));
-
-        if (ret < 1 || GNUNET_NETWORK_fdset_handle_isset (efds,
-            proc->control_pipe))
-          {
-            /* Just to be sure */
-            PLIBC_KILL (proc->pid, sig);
-            res = 0;
-          }
-        else
-          {
-            if (GNUNET_DISK_file_read (proc->control_pipe, &ret,
-                sizeof(ret)) != GNUNET_OK)
-              res = PLIBC_KILL (proc->pid, sig);
-
-            /* Child signaled shutdown is in progress */
-            goto read_next;
-          }
-      }
-
-    return res;
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+        "Wrote control code into control pipe, now waiting\n");
+    WaitForSingleObject (proc->handle, 5000);
+#if WINDOWS
+    TerminateProcess (proc->handle, 0);
+#else
+    PLIBC_KILL (proc->pid, sig);
+#endif
+    res = 0;
+  }
+  return res;
 #else
   return kill (proc->pid, sig);
 #endif
-- 
1.7.4

