From 2fbe7a81904731a2e44bd327a84207626d6c8335 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Mon, 27 Apr 2015 14:46:05 -0400 Subject: [PATCH] webserver: only start listening _after_ everything is compiled --- app.js | 5 +++-- src/webserver.js | 14 ++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app.js b/app.js index 693032f857..cf28e756f2 100644 --- a/app.js +++ b/app.js @@ -160,11 +160,12 @@ function start() { require('./src/user').startJobs(); } + webserver.listen(); + async.waterfall([ async.apply(meta.themes.setupPaths), async.apply(plugins.ready), - async.apply(meta.templates.compile), - async.apply(webserver.listen) + async.apply(meta.templates.compile) ], function(err) { if (err) { winston.error(err.stack); diff --git a/src/webserver.js b/src/webserver.js index da998cae06..c5f47aafcb 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -138,7 +138,7 @@ if(nconf.get('ssl')) { server.setTimout && server.setTimeout(10000); - module.exports.listen = function(callback) { + module.exports.listen = function() { logger.init(app); var isSocket = isNaN(port), @@ -149,15 +149,13 @@ if(nconf.get('ssl')) { args.push(function(err) { if (err) { winston.info('[startup] NodeBB was unable to listen on: ' + bind_address); - return callback(err); + process.exit(); } winston.info('NodeBB is now listening on: ' + (isSocket ? port : bind_address)); if (oldUmask) { process.umask(oldUmask); } - - callback(); }); // Alter umask if necessary @@ -166,7 +164,9 @@ if(nconf.get('ssl')) { net = require('net'); module.exports.testSocket(port, function(err) { if (!err) { - server.listen.apply(server, args); + emitter.on('nodebb:ready', function() { + server.listen.apply(server, args); + }); } else { winston.error('[startup] NodeBB was unable to secure domain socket access (' + port + ')'); winston.error('[startup] ' + err.message); @@ -174,7 +174,9 @@ if(nconf.get('ssl')) { } }); } else { - server.listen.apply(server, args); + emitter.on('nodebb:ready', function() { + server.listen.apply(server, args); + }); } };