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) {