another amendment to signal handler: make signaled_flags_XY volatile sig_atomic_t...
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 22 Jan 2015 16:43:36 +0000 (17:43 +0100)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 22 Jan 2015 16:43:36 +0000 (17:43 +0100)
src/main.cpp

index ce92e0a..dfbc078 100644 (file)
@@ -82,10 +82,10 @@ void reset_signal_handlers();
 // data required for signal handling (SIGINT, SIGTERM, ... )
 struct signal_data_struct
 {
-    bool signaled_flag_int;
-    bool signaled_flag_term;
-    bool signaled_flag_usr1;
-    bool signaled_flag_usr2;
+    volatile sig_atomic_t signaled_flag_int;
+    volatile sig_atomic_t signaled_flag_term;
+    volatile sig_atomic_t signaled_flag_usr1;
+    volatile sig_atomic_t signaled_flag_usr2;
     IoServiceItem io_service;
     void (*old_handler_int )(int);
     void (*old_handler_term)(int);
@@ -96,10 +96,10 @@ struct signal_data_struct
     int config_log_level;
 
     signal_data_struct():
-        signaled_flag_int( false ),
-        signaled_flag_term( false ),
-        signaled_flag_usr1( false ),
-        signaled_flag_usr2( false ),
+        signaled_flag_int( 0 ),
+        signaled_flag_term( 0 ),
+        signaled_flag_usr1( 0 ),
+        signaled_flag_usr2( 0 ),
         io_service(),
         old_handler_int( 0 ),
         old_handler_term( 0 ),
@@ -316,19 +316,19 @@ signal_data_struct signal_data;
 /// registered as signal handler; just sets signal_data.signaled_flag
 void signal_handler_int(int param)
 {
-    signal_data.signaled_flag_int = true;
+    signal_data.signaled_flag_int = 1;
 }
 void signal_handler_term(int param)
 {
-    signal_data.signaled_flag_term = true;
+    signal_data.signaled_flag_term = 1;
 }
 void signal_handler_usr1(int param)
 {
-    signal_data.signaled_flag_usr1 = true;
+    signal_data.signaled_flag_usr1 = 1;
 }
 void signal_handler_usr2(int param)
 {
-    signal_data.signaled_flag_usr2 = true;
+    signal_data.signaled_flag_usr2 = 1;
 }
 
 
@@ -354,19 +354,19 @@ void signal_checker( const boost::system::error_code &error )
     else {
         if ( signal_data.signaled_flag_int )
         {
-            signal_data.signaled_flag_int = false;
+            signal_data.signaled_flag_int = 0;
             GlobalLogger.notice() << "Received signal SIGINT --> will stop" << endl;
             want_stop = true;
         }
         else if ( signal_data.signaled_flag_term )
         {
-            signal_data.signaled_flag_term = false;
+            signal_data.signaled_flag_term = 0;
             GlobalLogger.notice() << "Received signal SIGTERM --> will stop" << endl;
             want_stop = true;
         }
         else if ( signal_data.signaled_flag_usr1 )
         {
-            signal_data.signaled_flag_usr1 = false;
+            signal_data.signaled_flag_usr1 = 0;
             int new_log_level = I2n::Logger::get_log_level()+1;
             I2n::Logger::set_log_level( new_log_level );
             GlobalLogger.info() << "Received SIGUSR1 -- increased log level to "
@@ -374,7 +374,7 @@ void signal_checker( const boost::system::error_code &error )
         }
         else if ( signal_data.signaled_flag_usr2 )
         {
-            signal_data.signaled_flag_usr2 = false;
+            signal_data.signaled_flag_usr2 = 0;
             I2n::Logger::set_log_level( signal_data.config_log_level );
             GlobalLogger.info() << "Received SIGUSR2 -- reset log level to normal ("
                 << I2n::Logger::get_log_level_string() << ")";
@@ -397,10 +397,10 @@ void signal_checker( const boost::system::error_code &error )
 /// register own signal handlers; see reset_signal_handlers for undo
 void install_signal_handlers( const IoServiceItem io_service, const int config_log_level )
 {
-    signal_data.signaled_flag_int = false;
-    signal_data.signaled_flag_term = false;
-    signal_data.signaled_flag_usr1 = false;
-    signal_data.signaled_flag_usr2 = false;
+    signal_data.signaled_flag_int = 0;
+    signal_data.signaled_flag_term = 0;
+    signal_data.signaled_flag_usr1 = 0;
+    signal_data.signaled_flag_usr2 = 0;
     signal_data.config_log_level = config_log_level;
 
     // install own signal handlers