From 300ff7fc87acf09a83fa0cc8d9c3e5083d28f431 Mon Sep 17 00:00:00 2001 From: Wyatt Preul Date: Wed, 27 Feb 2013 10:33:18 -0600 Subject: [PATCH] Adding graceful shutdown from QUIT signal event --- bin/hapi | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/bin/hapi b/bin/hapi index 0faa272a1..ec4170379 100755 --- a/bin/hapi +++ b/bin/hapi @@ -8,28 +8,36 @@ var argv = Optimist.usage('Usage: $0 -c config.json [-p node_modules_path]') .argv; var config = null; -try { - config = require(argv.c[0] !== '/' ? process.cwd() + '/' + argv.c : argv.c); +try { + config = require(argv.c[0] !== '/' ? process.cwd() + '/' + argv.c : argv.c); } -catch (err) { - console.log('Failed loading configuration file: ' + argv.c + ' (' + err.message + ')'); - process.exit(1); +catch (err) { + console.log('Failed loading configuration file: ' + argv.c + ' (' + err.message + ')'); + process.exit(1); } var packOptions = { requirePath: argv.p || null }; -var composer = new Hapi.Composer(config, packOptions); -composer.compose(function (err) { - +var composer = new Hapi.Composer(config, packOptions); +composer.compose(function (err) { + Hapi.utils.assert(!err, 'Failed loading plugins: ' + (err && err.message)); composer.start(function (err) { Hapi.utils.assert(!err, 'Failed starting server: ' + (err && err.message)); + + process.on('SIGQUIT', function () { // Use kill -s QUIT {pid} to kill the server gracefully + + http.stop(function () { + + process.exit(); + }); + }); }); -}); - +}); +