diff --git a/middleman-core/lib/middleman-core/preview_server.rb b/middleman-core/lib/middleman-core/preview_server.rb index 41833415..c2506c17 100644 --- a/middleman-core/lib/middleman-core/preview_server.rb +++ b/middleman-core/lib/middleman-core/preview_server.rb @@ -31,6 +31,12 @@ module Middleman ::Middleman::Profiling.report("server_start") @webrick.start + + # $mm_shutdown is set by the signal handler + if $mm_shutdown + shutdown + exit + end end end @@ -118,8 +124,9 @@ module Middleman %w(INT HUP TERM QUIT).each do |sig| if Signal.list[sig] Signal.trap(sig) do - shutdown - exit + # Do as little work as possible in the signal context + $mm_shutdown = true + @webrick.stop end end end