Rename signal handler functions to what they really are: Handle signals
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Wed, 6 Oct 2010 14:33:32 +0000 (16:33 +0200)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Wed, 6 Oct 2010 14:33:38 +0000 (16:33 +0200)
src/main.cpp

index ea70d7a..715d06d 100644 (file)
 using namespace std;
 
 Updater::Ptr updater;
-volatile bool need_config_reload = false;
 volatile bool exit_now = false;
-
-volatile bool caught_sig_term = false;
+volatile bool caught_sig_hup = false;
 volatile bool caught_sig_usr1 = false;
 volatile bool caught_sig_usr2 = false;
-volatile bool caught_sig_rtmin1 = false;
+volatile bool caught_sig_rtmin = false;
+volatile bool caught_sig_term = false;
 
 /**
  * Checks if a bpdyndnsd process is already running.
@@ -137,52 +136,52 @@ int shutdown()
 
 
 /**
- * Signal SIGTERM caught, releasing resources and exit.
+ * Signal SIGTERM caught (exit program)
  * @param param Parameter from the signal interface.
  */
-void terminate(int param)
+void sigterm_func(int param)
 {
     caught_sig_term = true;
 } /*lint !e715 */
 
 
 /**
- * Signal SIGUSR1 caught, switching to offline mode.
+ * Signal SIGUSR1 caught (switch to offline mode)
  * @param param Parameter from the signal interface.
  */
-void switch_to_offline(int param)
+void sigusr1_func(int param)
 {
     caught_sig_usr1 = true;
 } /*lint !e715 */
 
 
 /**
- * Signal SIGHUP caught, reloading config.
+ * Signal SIGHUP caught (reload config)
  * @param param Parameter from the signal interface.
  */
-void reload_config(int param)
+void sighup_func(int param)
 {
-    need_config_reload = true;
+    caught_sig_hup = true;
 } /*lint !e715 */
 
 
 /**
- * Signal SIGUSR2 caught, switching to online mode.
+ * Signal SIGUSR2 caught (switch to online mode)
  * @param param Parameter from the signal interface.
  */
-void switch_to_online(int param)
+void sigusr2_func(int param)
 {
     caught_sig_usr2 = true;
 } /*lint !e715 */
 
 
 /**
- * Signal SIGRTMIN caught, switching to online mode with webcheck enabled.
+ * Signal SIGRTMIN caught (switch to online mode with webcheck enabled)
  * @param param Parameter from the signal interface.
  */
-void switch_to_online_webcheck(int param)
+void sigrtmin_func(int param)
 {
-    caught_sig_rtmin1 = true;
+    caught_sig_rtmin = true;
 } /*lint !e715 */
 
 
@@ -193,31 +192,31 @@ void switch_to_online_webcheck(int param)
 int init_signals()
 {
     sighandler_t ret_val;
-    ret_val = signal(SIGTERM,terminate);
+    ret_val = signal(SIGTERM, sigterm_func);
     if ( ret_val == SIG_ERR )
     {
         updater->get_logger()->print_error_setting_signal("SIGTERM");
         return -1;
     }
-    ret_val = signal(SIGUSR1,switch_to_offline);
+    ret_val = signal(SIGUSR1, sigusr1_func);
     if ( ret_val == SIG_ERR )
     {
         updater->get_logger()->print_error_setting_signal("SIGUSR1");
         return -1;
     }
-    ret_val = signal(SIGHUP,reload_config);
+    ret_val = signal(SIGHUP, sighup_func);
     if ( ret_val == SIG_ERR )
     {
         updater->get_logger()->print_error_setting_signal("SIGHUP");
         return -1;
     }
-    ret_val = signal(SIGUSR2,switch_to_online);
+    ret_val = signal(SIGUSR2, sigusr2_func);
     if ( ret_val == SIG_ERR )
     {
         updater->get_logger()->print_error_setting_signal("SIGUSR2");
         return -1;
     }
-    ret_val = signal(SIGRTMIN,switch_to_online_webcheck);
+    ret_val = signal(SIGRTMIN, sigrtmin_func);
     if ( ret_val == SIG_ERR )
     {
         updater->get_logger()->print_error_setting_signal("SIGRTMIN");
@@ -331,9 +330,9 @@ int main(int argc, char *argv[])
             // Go online
             is_online = true;
             webcheck_enabled = false;
-        } else if (caught_sig_rtmin1)
+        } else if (caught_sig_rtmin)
         {
-            caught_sig_rtmin1 = false;
+            caught_sig_rtmin = false;
             updater->get_logger()->print_caught_sigrtmin();
 
             // Go online - with webcheck
@@ -341,10 +340,20 @@ int main(int argc, char *argv[])
             webcheck_enabled = true;
         } else if (caught_sig_term)
         {
-            caught_sig_term = true;
+            caught_sig_term = false;
             updater->get_logger()->print_caught_sigterm();
 
             exit_now = true;
+        } else if (caught_sig_hup)
+        {
+            caught_sig_hup = false;
+            updater->get_logger()->print_caught_sighup();
+
+            if ( updater->reload_config() != 0 )
+            {
+                updater->get_logger()->print_conf_reload_failed_exit();
+                exit(-1);
+            }
         }
 
         // State handling
@@ -363,18 +372,6 @@ int main(int argc, char *argv[])
             updater->get_logger()->print_offline_mode();
         }
 
-        if (need_config_reload)
-        {
-            updater->get_logger()->print_caught_sighup();
-            need_config_reload = false;
-
-            if ( updater->reload_config() != 0 )
-            {
-                updater->get_logger()->print_conf_reload_failed_exit();
-                exit(-1);
-            }
-        }
-
         // Snore, snore... don't hog the cpu if we are in daemon_mode.
         if ( !exit_now )
             sleep(10); /*lint !e534 */