|
@@ -131,18 +131,33 @@ var exp = {};
|
|
|
exp.boot = function(callback) {
|
|
|
var port = process.env.PORT || 3000;
|
|
|
var bind_ip = process.env.BIND || "0.0.0.0";
|
|
|
- logging.log("Server running on http://" + bind_ip + ":" + port + "/");
|
|
|
server = http.createServer(requestHandler).listen(port, bind_ip, function() {
|
|
|
+ logging.log("Server running on http://" + bind_ip + ":" + port + "/");
|
|
|
if (callback) {
|
|
|
callback();
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
+ // stop accepting new connections,
|
|
|
+ // wait for established connections to finish (30s max),
|
|
|
+ // then exit
|
|
|
+ process.on("SIGTERM", function() {
|
|
|
+ logging.warn("Got SIGTERM, no longer accepting connections!");
|
|
|
+
|
|
|
+ setTimeout(function() {
|
|
|
+ logging.error("Dropping connections after 30s. Force quit.");
|
|
|
+ process.exit(1);
|
|
|
+ }, 30000);
|
|
|
+
|
|
|
+ server.close(function() {
|
|
|
+ // all connections have been closed
|
|
|
+ process.exit();
|
|
|
+ });
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
exp.close = function(callback) {
|
|
|
- server.close(function() {
|
|
|
- callback();
|
|
|
- });
|
|
|
+ server.close(callback);
|
|
|
};
|
|
|
|
|
|
module.exports = exp;
|