gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r26578 - gnunet/src/testbed


From: gnunet
Subject: [GNUnet-SVN] r26578 - gnunet/src/testbed
Date: Fri, 22 Mar 2013 18:29:04 +0100

Author: harsha
Date: 2013-03-22 18:29:03 +0100 (Fri, 22 Mar 2013)
New Revision: 26578

Modified:
   gnunet/src/testbed/gnunet-helper-testbed.c
Log:
fix: 2839

Modified: gnunet/src/testbed/gnunet-helper-testbed.c
===================================================================
--- gnunet/src/testbed/gnunet-helper-testbed.c  2013-03-22 17:02:09 UTC (rev 
26577)
+++ gnunet/src/testbed/gnunet-helper-testbed.c  2013-03-22 17:29:03 UTC (rev 
26578)
@@ -267,6 +267,9 @@
 {
   const struct GNUNET_DISK_FileHandle *pr;
   char c[16];
+  enum GNUNET_OS_ProcessStatusType type;
+  unsigned long code;
+  int ret;
 
   pr = GNUNET_DISK_pipe_handle (sigpipe, GNUNET_DISK_PIPE_END_READ);
   child_death_task_id = GNUNET_SCHEDULER_NO_TASK;
@@ -279,14 +282,25 @@
   }
   /* consume the signal */
   GNUNET_break (0 < GNUNET_DISK_file_read (pr, &c, sizeof (c)));
-  LOG_DEBUG ("Child died\n");
-  if (NULL != testbed)
+  LOG_DEBUG ("Got SIGCHLD\n");
+  if (NULL == testbed)
   {
-    GNUNET_break (GNUNET_OK == GNUNET_OS_process_wait (testbed));
+    GNUNET_break (0);
+    return;
+  }
+  GNUNET_break (GNUNET_SYSERR != 
+                (ret = GNUNET_OS_process_status (testbed, &type, &code)));
+  if (GNUNET_NO != ret)
+  {
     GNUNET_OS_process_destroy (testbed);
     testbed = NULL;
+    shutdown_now ();
+    return;
   }
-  shutdown_now ();
+  LOG_DEBUG ("Child hasn't died.  Resuming to monitor its status\n");
+  child_death_task_id =
+      GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
+                                      pr, &child_death_task, NULL);
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]