From f63cb933ddd8633893094018cdf75c812edbf75c Mon Sep 17 00:00:00 2001 From: Andy Burke Date: Wed, 23 Jul 2025 17:05:33 -0700 Subject: [PATCH] fix: try a different way to listen for the server shutdown and remove signal listeners --- deno.json | 2 +- server.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/deno.json b/deno.json index 314dec8..114156a 100644 --- a/deno.json +++ b/deno.json @@ -1,7 +1,7 @@ { "name": "@andyburke/serverus", "description": "A flexible HTTP server for mixed content. Throw static files, markdown, Typescript and (hopefully, eventually) more into a directory and serverus can serve it up a bit more like old-school CGI.", - "version": "0.9.5", + "version": "0.9.6", "license": "MIT", "exports": { ".": "./serverus.ts", diff --git a/server.ts b/server.ts index a1ec040..8f5ff10 100644 --- a/server.ts +++ b/server.ts @@ -196,10 +196,15 @@ export class SERVER { */ public async stop(): Promise { if (this.server) { - if (this.shutdown_binding) { - Deno.removeSignalListener('SIGTERM', this.shutdown_binding); - Deno.removeSignalListener('SIGINT', this.shutdown_binding); - } + this.server.finished.finally(() => { + if (this.shutdown_binding) { + Deno.removeSignalListener('SIGTERM', this.shutdown_binding); + Deno.removeSignalListener('SIGINT', this.shutdown_binding); + } + + this.shutdown_binding = undefined; + }); + this.controller?.abort(); await this.server.shutdown(); } @@ -210,7 +215,6 @@ export class SERVER { this.controller = undefined; this.server = undefined; - this.shutdown_binding = undefined; this.original_directory = undefined; for (const handler_module of this.handlers) {