gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r29931 - msh/src


From: gnunet
Subject: [GNUnet-SVN] r29931 - msh/src
Date: Mon, 7 Oct 2013 17:25:26 +0200

Author: harsha
Date: 2013-10-07 17:25:26 +0200 (Mon, 07 Oct 2013)
New Revision: 29931

Modified:
   msh/src/test_pty.c
Log:
- register signal handler for SIGCHLD after calling grantpt()


Modified: msh/src/test_pty.c
===================================================================
--- msh/src/test_pty.c  2013-10-07 15:01:23 UTC (rev 29930)
+++ msh/src/test_pty.c  2013-10-07 15:25:26 UTC (rev 29931)
@@ -22,6 +22,11 @@
 #define BUF_SIZE 512
 
 /**
+ * handler for SIGCHLD.l  Register it just before forking
+ */
+static struct GNUNET_SIGNAL_Context *shc_chld;
+
+/**
  * Task to kill the child
  */
 static GNUNET_SCHEDULER_TaskIdentifier child_death_task;
@@ -355,6 +360,8 @@
     GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "ptsname");
     goto err_ret;
   }
+  shc_chld =
+      GNUNET_SIGNAL_handler_install (GNUNET_SIGCHLD, &sighandler_child_death);
   ret = fork();
   if (-1 == ret)
   {
@@ -582,10 +589,10 @@
     GNUNET_break (0);
     return;
   }
-  addrlen = res[0].ai_addrlen;
+  addrlen = res->ai_addrlen;
   addr = GNUNET_malloc (addrlen);
-  memcpy (addr, res[0].ai_addr, addrlen);
-  af_family = res[0].ai_family;
+  memcpy (addr, res->ai_addr, addrlen);
+  af_family = res->ai_family;
   freeaddrinfo (res);
   conn = GNUNET_CONNECTION_create_from_sockaddr (af_family, addr, addrlen);
   GNUNET_free (addr);
@@ -614,7 +621,6 @@
 
 int main(int argc, char *const argv[])
 {
-  struct GNUNET_SIGNAL_Context *shc_chld;
   static const struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END
   };
@@ -628,14 +634,13 @@
     GNUNET_break (0);
     return 1;
   }
-  shc_chld =
-      GNUNET_SIGNAL_handler_install (GNUNET_SIGCHLD, &sighandler_child_death);
   ret = 
       GNUNET_PROGRAM_run (argc, argv, "test-pty",
                          gettext_noop
                          ("msh-waiter test program"),
                          options, &run, NULL);
-  GNUNET_SIGNAL_handler_uninstall (shc_chld);
+  if (NULL != shc_chld)
+    GNUNET_SIGNAL_handler_uninstall (shc_chld);
   GNUNET_DISK_pipe_close (sigpipe);
   GNUNET_free ((void *) argv);
   return ret;
@@ -736,7 +741,6 @@
   GNUNET_SCHEDULER_run (&run, NULL);
   (void) wait (NULL);
   GNUNET_DISK_file_close (chld_io);
-  GNUNET_SIGNAL_handler_uninstall (shc_chld);
   return 0;
 
 #endif




reply via email to

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