From d2e0134939034296633733b1dcb11285bc0e0750 Mon Sep 17 00:00:00 2001 From: Erik Price Date: Wed, 23 Nov 2022 12:46:52 -0800 Subject: [PATCH] fix: clean up signal handlers on restart Signed-off-by: Erik Price --- src/server.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/server.js b/src/server.js index 0850e5f..4d7f4df 100644 --- a/src/server.js +++ b/src/server.js @@ -602,11 +602,8 @@ export function server(opts) { process.exit(1); }); - process.on('SIGINT', () => { - process.exit(); - }); - - process.on('SIGHUP', () => { + const handleSIGINT = () => process.exit(); + const handleSIGHUP = () => { console.log('Stopping server and reloading config'); running.server.shutdown(() => { @@ -614,6 +611,15 @@ export function server(opts) { running.server = restarted.server; running.app = restarted.app; }); + }; + + process.on('SIGINT', handleSIGINT); + process.on('SIGHUP', handleSIGHUP); + + // Clean up when we close the server to prevent listener leaks on restart + running.server.on('close', () => { + process.removeListener('SIGINT', handleSIGINT); + process.removeListener('SIGHUP', handleSIGHUP); }); return running;