]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
bot: reorder fork sequence
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Fri, 4 Jun 2021 14:46:59 +0000 (16:46 +0200)
committerMatthias Hecker <36882671+mattzque@users.noreply.github.com>
Sat, 5 Jun 2021 16:06:45 +0000 (18:06 +0200)
We do the actual fork as the last step, after redirecting the
standard I/O streams. This also ensures that no log messages
are shown on console _after_ forking.

lib/rbot/ircbot.rb

index 564403f5d3bdfb7868708e6a874bc1cb0ae59b4e..058e7bbeaf5e1add2a77808bf46fd46b3dcc580e 100644 (file)
@@ -403,26 +403,6 @@ class Bot
       debug "Using `#{@logfile}' as debug log"
     end
 
-    LoggerManager.instance.flush
-
-    # See http://blog.humlab.umu.se/samuel/archives/000107.html
-    # for the backgrounding code
-    if $daemonize
-      begin
-        exit if fork
-        Process.setsid
-        exit if fork
-      rescue NotImplementedError
-        warning "Could not background, fork not supported"
-      rescue SystemExit
-        exit 0
-      rescue Exception => e
-        warning "Could not background. #{e.pretty_inspect}"
-      end
-      Dir.chdir botclass
-      # File.umask 0000                # Ensure sensible umask. Adjust as needed.
-    end
-
     # setup logger based on bot configuration, if not set from the command line
     loglevel_set = $opts.has_key?('debug') or $opts.has_key?('loglevel')
     LoggerManager.instance.set_level(@config['log.level']) unless loglevel_set
@@ -459,9 +439,25 @@ class Bot
         return str.bytesize
       end
 
-      LoggerManager.instance.log_session_start
+      # See http://blog.humlab.umu.se/samuel/archives/000107.html
+      # for the backgrounding code
+      begin
+        exit if fork
+        Process.setsid
+        exit if fork
+      rescue NotImplementedError
+        warning "Could not background, fork not supported"
+      rescue SystemExit
+        exit 0
+      rescue Exception => e
+        warning "Could not background. #{e.pretty_inspect}"
+      end
+      Dir.chdir botclass
+      # File.umask 0000                # Ensure sensible umask. Adjust as needed.
     end
 
+    LoggerManager.instance.log_session_start
+
     File.open($opts['pidfile'] || File.join(@botclass, 'rbot.pid'), 'w') do |pf|
       pf << "#{$$}\n"
     end