# File lib/thin/server.rb, line 230 def setup_signals # Queue up signals so they are processed in non-trap context # using a EM timer. @signal_queue ||= [] %w( INT TERM ).each do |signal| trap(signal) { @signal_queue.push signal } end # *nix only signals %w( QUIT HUP USR1 ).each do |signal| trap(signal) { @signal_queue.push signal } end unless Thin.win? # Signals are processed at one second intervals. @signal_timer ||= EM.add_periodic_timer(1) { handle_signals } end