Handle SIGINT and SIGTERM to enable clean shutdown of Homebridge

For now we terminate the process, but in the future we may tell the
server to stop, which may possibly include some teardown logic.

Handling these signals also make it easier to put Homebridge inside
a docker container, as docker uses SIGTERM to tell a container process
to stop, and passes SIGINT when attached to the container and receiving
a Ctrl+C.
This commit is contained in:
Tor Arne Vestbø
2016-02-18 00:17:34 +01:00
parent 57beabf0b4
commit cf80e4f2da

View File

@@ -23,5 +23,17 @@ module.exports = function() {
// Initialize HAP-NodeJS with a custom persist directory
hap.init(User.persistPath());
new Server(insecureAccess).run();
var server = new Server(insecureAccess);
var signals = { 'SIGINT': 2, 'SIGTERM': 15 };
Object.keys(signals).forEach(function (signal) {
process.on(signal, function () {
log.info("Got %s, shutting down Homebridge...", signal);
// FIXME: Shut down server cleanly
process.exit(128 + signals[signal]);
});
});
server.run();
}