gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r9609 - gnunet/src/util


From: gnunet
Subject: [GNUnet-SVN] r9609 - gnunet/src/util
Date: Sat, 21 Nov 2009 14:20:10 -0700

Author: durner
Date: 2009-11-21 14:20:10 -0700 (Sat, 21 Nov 2009)
New Revision: 9609

Modified:
   gnunet/src/util/service.c
Log:
improved logging

Modified: gnunet/src/util/service.c
===================================================================
--- gnunet/src/util/service.c   2009-11-21 19:47:40 UTC (rev 9608)
+++ gnunet/src/util/service.c   2009-11-21 21:20:10 UTC (rev 9609)
@@ -1298,6 +1298,11 @@
                     enum GNUNET_SERVICE_Options opt,
                     GNUNET_SERVICE_Main task, void *task_cls)
 {
+#define HANDLE_ERROR    err = 1; \
+                        GNUNET_assert (0); \
+                        goto shutdown;
+
+  int err;
   char *cfg_fn;
   char *loglev;
   char *logfile;
@@ -1315,6 +1320,7 @@
     GNUNET_GETOPT_OPTION_VERSION (PACKAGE_VERSION),
     GNUNET_GETOPT_OPTION_END
   };
+  err = 0;
   do_daemonize = 0;
   logfile = NULL;
   loglev = GNUNET_strdup ("WARNING");
@@ -1329,38 +1335,37 @@
   sctx.serviceName = serviceName;
   sctx.cfg = cfg = GNUNET_CONFIGURATION_create ();
   /* setup subsystems */
-  if ((GNUNET_SYSERR ==
-       GNUNET_GETOPT_run (serviceName,
-                          service_options,
-                          argc,
-                          argv)) ||
-      (GNUNET_OK !=
-       GNUNET_log_setup (serviceName, loglev, logfile)) ||
-      (GNUNET_OK !=
-       GNUNET_CONFIGURATION_load (cfg, cfg_fn)) ||
-      (GNUNET_OK !=
-       setup_service (&sctx)) ||
-      ((do_daemonize == 1) &&
-       (GNUNET_OK != detach_terminal (&sctx))) ||
-      (GNUNET_OK != set_user_id (&sctx)))
+  if (GNUNET_SYSERR == GNUNET_GETOPT_run (serviceName, service_options, argc,
+      argv))
     {
-      if (sctx.ready_confirm_fd != -1)
-        {
-          if (1 != WRITE (sctx.ready_confirm_fd, "I", 1))
-            GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "write");
-          GNUNET_break (0 == CLOSE (sctx.ready_confirm_fd));
-        }
-      GNUNET_CONFIGURATION_destroy (cfg);
-      GNUNET_free_non_null (sctx.addr);
-      GNUNET_free_non_null (logfile);
-      GNUNET_free (loglev);
-      GNUNET_free (cfg_fn);
-      GNUNET_free_non_null (sctx.v4_denied);
-      GNUNET_free_non_null (sctx.v6_denied);
-      GNUNET_free_non_null (sctx.v4_allowed);
-      GNUNET_free_non_null (sctx.v6_allowed);
-      return GNUNET_SYSERR;
+      HANDLE_ERROR
     }
+
+  if (GNUNET_OK != GNUNET_log_setup (serviceName, loglev, logfile))
+    {
+      HANDLE_ERROR
+    }
+
+  if (GNUNET_OK != GNUNET_CONFIGURATION_load (cfg, cfg_fn))
+    {
+      HANDLE_ERROR
+    }
+
+  if (GNUNET_OK != setup_service (&sctx))
+    {
+      HANDLE_ERROR
+    }
+
+  if (do_daemonize == 1 && GNUNET_OK != detach_terminal (&sctx))
+    {
+      HANDLE_ERROR
+    }
+
+  if (GNUNET_OK != set_user_id (&sctx))
+    {
+      HANDLE_ERROR
+    }
+
 #if 0
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Service `%s' runs with configuration from `%s'\n",
@@ -1368,17 +1373,20 @@
 #endif
   /* actually run service */
   GNUNET_SCHEDULER_run (&service_task, &sctx);
+
+  /* shutdown */
+  if ((do_daemonize == 1) && (sctx.server != NULL))
+    pid_file_delete (&sctx);
+  GNUNET_free_non_null (sctx.my_handlers);
+
+shutdown:
   if (sctx.ready_confirm_fd != -1)
     {
-      if (1 != WRITE (sctx.ready_confirm_fd, "S", 1))
+      if (1 != WRITE (sctx.ready_confirm_fd, err ? "I" : "S", 1))
         GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "write");
       GNUNET_break (0 == CLOSE (sctx.ready_confirm_fd));
     }
 
-  /* shutdown */
-  if ((do_daemonize == 1) && (sctx.server != NULL))
-    pid_file_delete (&sctx);
-  GNUNET_free_non_null (sctx.my_handlers);
   GNUNET_CONFIGURATION_destroy (cfg);
   GNUNET_free_non_null (sctx.addr);
   GNUNET_free_non_null (logfile);
@@ -1388,7 +1396,8 @@
   GNUNET_free_non_null (sctx.v6_denied);
   GNUNET_free_non_null (sctx.v4_allowed);
   GNUNET_free_non_null (sctx.v6_allowed);
-  return sctx.ret;
+
+  return err ? GNUNET_SYSERR : sctx.ret;
 }
 
 





reply via email to

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